1 条题解
-
0Guest LV 0 MOD
-
1
#include<bits/stdc++.h> using namespace std; string all,one; int pos=0,cnt=0,memory; string work(string str) { int len=str.size(); for(int i=0;i<len;i++) str[i]=(str[i]>='A'&&str[i]<='Z')?str[i]+32:str[i];//统一转换为小写字母,方便判断 return str; } string inputs() { string ls; getline(cin,ls); return " "+work(ls)+" ";//前后加上空格 } int main() { one=inputs();//给定单词 all=inputs();//给定句子 pos=all.find(one,pos);//找它的次数:C++里附带的函数 /* string中find()返回值是字母在母串中的位置(下标记录), 如果没有找到,那么会返回一个特别的标记 npos,也就是 -1。 */ if (pos==-1)//所以,没找到,输出 -1,结束 { cout<<pos<<endl; return 0; } else//否则开始判断 { memory=pos;//第一次出现位置记录 cnt++;//次数 ++ pos+=one.size()-1;//有种尺取的意思,往后挪一个单位 } while(pos<all.size())//只要未到头 { pos=all.find(one,pos); if(pos==-1)//一旦到头,退出 break; else { cnt++;//次数 ++ pos+=one.size()-1;//往后挪一个单位 } } cout<<cnt<<" "<<memory<<endl;//输出次数及第一次的位置 return 0; }
- 1
信息
- ID
- 1312
- 难度
- 5
- 分类
- (无)
- 标签
- 递交数
- 4
- 已通过
- 1
- 通过率
- 25%
- 上传者