1 条题解
- 
  0
Guest 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%
 - 上传者