题解
找字符
1 条题解
-
0
解题思路
题目要求做两件事:
- 输出所有“ASCII 码能被 3 整除”的字符,连成一行输出;
- 在第二行输出字符串的长度。
什么是 ASCII 码?其实每个字符在电脑里都对应一个整数,比如
A是 65,a是 97,空格是 32。这个整数就叫 ASCII 码。在 C++ 里,字符可以直接当成整数来比较和计算。所以判断“字符 c 的 ASCII 码能不能被 3 整除”,直接写
c % 3 == 0就可以了。做法:
- 用
getline读入整行字符串(因为字符串里可能有空格); - 遍历每个字符,凡是
c % 3 == 0的,就输出它(不要换行,让它们连成一串); - 如果一个符合条件的都没有,这一行就什么都不输出(直接换行);
- 输出一个换行后,再输出
s.size(),也就是字符串的长度。
拿样例
Chinacomputer来说:长度为 13。ASCII 码能被 3 整除的字符是i、c、o、u、r,连起来是icour。参考代码
// 用途:找ASCII码能被3整除的字符,并输出字符串长度 #include <iostream> #include <string> using namespace std; int main(){ string s; getline(cin,s); // 字符串可以包含空格 for(char c:s) if(c%3==0) cout<<c; // 满足条件就连着输出 cout<<endl; // 找不到时这一行就是空的(输出换行) cout<<s.size()<<endl; // 第二行输出字符串长度 return 0; }复杂度分析
- 时间:把字符串从头到尾扫描一遍,时间复杂度是 O(n),n 是字符串长度(不超过 100)。
- 空间:只用一个字符串,空间复杂度是 O(1)。
- 1