题意整理。
- 键盘输入两个字符串str和substr。
- 求substr在str中出现的次数。
方法一(循环+字符函数)
1.解题思路
- 遍历字符串。
- 检查当前字符的类型。如果是字母,字母计数加1;如果是空格,空格计数加1;如果是数字,数字计数加1;如果以上都不是,其它计数加1。
动图展示:
2.代码实现
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
getline(cin, str);
int whitespace = 0;
int digits = 0;
int chars = 0;
int others = 0;
//遍历字符串
for(int i=0;i<str.size();i++){
//如果是字母,字母计数加1
if(isalpha(str[i])){
chars++;
}
//如果是空格,空格计数加1
else if(isspace(str[i])){
whitespace++;
}
//如果是数字,数字计数加1
else if(isdigit(str[i])){
digits++;
}
//如果以上都不是,其它计数加1
else{
others++;
}
}
cout << "chars : " << chars
<< " whitespace : " << whitespace
<< " digits : " << digits
<< " others : " << others << endl;
return 0;
}
3.复杂度分析
- 时间复杂度:需要遍历字符串中所有字符,所以时间复杂度为。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为。