题解
统计字符
1 条题解
-
0
解题思路
这个题其实就两件事:数一数这行字有多长,再数一数里面有几个数字。
- 读入整行。 因为字符串里可能有空格,所以要用
getline读一整行。这样空格也会被算作有效字符。比如 "There are 5 apples and 8 oranges",每个字母、每个空格都算1个长度,一共32个字符。 - 数长度。 用一个变量
len,每看到一个字符就加1。getline读进来的内容恰好不含结尾的换行符,所以len就是"有效字符的个数"。 - 数数字。 再用一个变量
dig,如果当前字符是 '0'~'9' 中的一个,dig就加1。 - 分别输出
len和dig,各占一行。
参考代码
// 统计字符:统计字符串的长度(含空格)和其中阿拉伯数字的个数 #include <iostream> #include <string> using namespace std; int main(){ string s; getline(cin,s); // 整行读入,保留空格 int len=0,dig=0; for(int i=0;i<s.size();i++){ len++; // 每个字符都算1个长度(空格也算) if(s[i]>='0'&&s[i]<='9') dig++; // 如果是数字就计数加1 } cout<<len<<'\n'<<dig<<'\n'; return 0; }复杂度分析
- 时间复杂度:O(L),L 是字符串长度(不超过1000)。我们把每个字符从头到尾检查一遍。
- 空间复杂度:O(L),用来存这行字符串。
- 读入整行。 因为字符串里可能有空格,所以要用
- 1