题目
给定两个字符序列 a 和 b,求 b 在 a 中出现的次数。a 中的每个字符只能出现在零个或一个 b 字符序列中,
每组字符序列 a 和 b 输入在一行中,以空格分隔。
如果遇见 # 字符,则不再进行工作。
示例:
输入
abcde a3 aaaaaa aa #
输出
0 3
解题思路
从头到尾遍历 a,一旦遇到与 b 相符的序列,就计数 cnt。
C++代码
#include<cstdio>
#include<vector>
using namespace std;
int main(){
vector<char> a, b;
char ch = getchar();
int flag = 1;
while(1){
if(ch=='#')
break;
if(ch=='\n' || ch=='\r'){
flag = 1;
int cnt = 0;
int n = a.size();
int m = b.size();
for(int k=0; k<n && k<=n-m; ++k){
if(a[k]==b[0]){
int i=k+1;
int j=1;
while(j<m){
if(a[i]==b[j]){
++i;
++j;
}
else
break;
}
if(j==m){
++cnt;
k = i-1;
}
}
}
printf("%d\n", cnt);
a.clear();
b.clear();
}
else if(ch==' ')
flag = 2;
else if(flag==1)
a.push_back(ch);
else
b.push_back(ch);
ch = getchar();
}
return 0;
}
京公网安备 11010502036488号