AcWing 446. 统计单词数
原题链接
简单
作者:
不幸到吃土
,
2025-01-14 22:54:46
,
所有人可见
,
阅读 1
//双指针:(i,j)遍历当前两端不含" "的单词,i指向的当前单词的最左端,j++以实现匹配
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int main(){
string a,b; //a为模式串,b为匹配串
getline(cin,a);
getline(cin,b);
transform(a.begin(), a.end(), a.begin(), ::tolower); //将所有的字符均转小写
transform(b.begin(), b.end(), b.begin(), ::tolower);
int lenA = a.size();
int lenB = b.size();
int cnt = 0; //记录成功匹配的单词数目
int idx = 0; //记录第一个出现的单词下标
for(int i=0,j=0;i<lenB;i++){
bool flag = true; //记录当前单词是否匹配成功
if(b[i] == ' ')
continue;
j = i;
while(j<lenB && b[j] != ' ')
j++;
if(j-i != lenA){
flag = false;
}else{
for(int k=0;k<lenA;k++){
if(a[k] != b[i+k]){
flag = false;
break;
}
}
}
if(flag){
cnt++;
if(cnt == 1)
idx = i;
}
i = j;
}
if(cnt == 0){
cout << -1 << endl;
}else{
cout << cnt << " " << idx << endl;
}
return 0;
}