你这思路好像不对,应该是判断到第一次空格的时候把它压到一个新的字符串里面去,然后第二次判断到空格就对比要找的字符串并且开始下一轮的判断,如果一样就++,不一样就清空之前压字符进去的字符串然后继续判断下一个,建议写do while。(第一个不用判断)
@[ycyy](/user/877089) 以上是具体思路(求一关)
by liu_le_chen @ 2023-08-17 17:52:06
噢对了,补充一下,找到了一后把那个压入很多字符的字符串存到一个字符串数组里,然后再清空。(插入到“++”后面)
by liu_le_chen @ 2023-08-17 17:56:14
@[ycyy](/user/877089) (您的关注是对本人的最大支持)
by liu_le_chen @ 2023-08-17 17:57:31
@[liulechen](/user/1037273) 还是不太懂,字符串里有空格对getline()和转小写和判断是否一样影响应该不大吧
by ycyy @ 2023-08-17 18:08:14
@[ycyy](/user/877089)
```cpp
#include<iostream>
#include<string>
using namespace std;
int main(){
string a;
getline(cin,a);
string b;
getline(cin,b);
int c=0;//个数
int d[10000];//位置
//都转化为小写
for(int i=0;i<sizeof(b);i++){
if(b[i]>=65&&b[i]<=90)b[i]+=32; //这里97是小写字母a,大写Z的ascii码是90,改完后就不会RE
}
for(int i=0;i<sizeof(a);i++){
if(a[i]>=65&&a[i]<=90)a[i]+=32;
}
//两个字符串比较
for(int i=0;i<sizeof(b);i++){
if(b[i]==a[0]&&b[i+1]==a[1]){c++;d[c]=i;}//直接将i的值作为两个字符串相等的位置
}
if(c>0){cout<<c<<" "<<d[1];}//c++后是从1开始的
else cout<<-1;
return 0;
}
```
by hexuchen @ 2023-08-17 18:16:10
嗯
by liu_le_chen @ 2023-08-17 18:18:20
@[liulechen](/user/1037273) 但是那样会WA掉
by hexuchen @ 2023-08-17 18:22:00
代码还要改,等我下
by hexuchen @ 2023-08-17 18:22:15
没有影响呀,如果是空格,那就调用一个判断的函数,然后continue;
by liu_le_chen @ 2023-08-17 18:23:55
应该不会吧
by liu_le_chen @ 2023-08-17 18:24:19