记忆数字
记忆数字
https://ac.nowcoder.com/acm/contest/80917/D
记忆数字
标签: 字符串
难度: 2颗星
思路:
遍历字符串,维护单词长度 len
,如果是当前字符是字母就让len++
,否则检查一下len
是否为0,如果为0则直接输出len % 10
并重置len
。
技巧:
使用 isalpha()
函数判断字符是不是字母,输入使用getline(cin,str)
。
注:
结尾要加一个判断,防止末尾没有不是字母的符号,最后一个单词输出不了。
示例:
#include<bits/stdc++.h>
using namespace std;
int main() {
string str;
getline(cin, str);
int len = 0;
for (char ch : str) {
if (isalpha(ch)) {
len++;
} else if (len) {
cout << len % 10;
len = 0;
}
}
if (len) {
cout << len % 10;
}
return 0;
}
补充:
在C++中,isalpha()
函数是标准库中的一个字符判断函数,它用于检查给定的字符是否是字母。这个函数属于 <cctype>
头文件,因此在使用之前需要包含这个头文件。
函数的原型如下:
int isalpha(int c);
c
是一个整数参数,代表要检查的字符。
函数的返回值:
- 如果字符
c
是字母(大写或小写),则返回非零值(通常是1)。 - 如果字符
c
不是字母,则返回0。
这里有一个简单的示例,展示了如何使用 isalpha()
函数:
#include <iostream>
#include <cctype> // 包含isalpha()函数的头文件
int main() {
char ch = 'a';
if (isalpha(ch)) {
std::cout << ch << " 是一个字母" << std::endl;
} else {
std::cout << ch << " 不是一个字母" << std::endl;
}
return 0;
}
在这个示例中,我们检查字符 'a'
是否是一个字母。由于 'a'
是一个字母,所以程序将输出 'a' 是一个字母
。
需要注意的是,isalpha()
函数检查的是字符的类别,而不是它的编码值。例如,即使字符的ASCII值在字母的范围内,如果它不是标准的字母字符,isalpha()
也会返回0。此外,isalpha()
函数通常只识别标准的ASCII字母,对于扩展的ASCII字符集或Unicode字符集中的字母,可能需要使用其他函数或方法。