洛谷P1308 统计单词数
这题很简单,不知道为什么有人不会做
都在代码里面标出来了,不用我多说
就是搜索加判断,不需要捏太长
我写的有点多但还算是易懂
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<string> using namespace std; string a,b;//字符串 int ans=0;int aaa=-1;//ans是答案 aaa是最早的字符哪里开始 int main(){ getline(cin,a);//直接cin碰到‘ ’(空格)就没了 getline(cin,b); int n=b.size();//求字符串长度 for(int i=0;i<=n-1;i++){//运行,字符串a要是有大写就变小写(+32) if(b[i]>='A' && b[i]<='Z')b[i]+=32; } int yy=a.size(); for(int i=0;i<=yy-1;i++){//同上 if(a[i]>='A' && a[i]<='Z')a[i]+=32; } for(int i=0;i<=n-1;i++){//cout<<b[i]<<" "<<a[0]<<" "; 检查 if(b[i]==a[0]){//假若碰到开头 int u=i,l=0; for(int j=0;j<=yy-1;j++,u++){//cout<<endl<<endl<<b[u]<<" "<<a[j]<<" \n\n\n"; 检查 if(b[u]==a[j])l++; }//cout<<l<<" "<<yy<<" "; 检查 if(l==yy && (b[i-1]==' ' || i-1==-1) && (b[i+yy]==' ' || i+yy>n-1)){//前面和后面是空格或者碰到边,就是表达这是一个单纯的单词而不是包含的,如输入a为‘to’,那么‘to’是而‘noto’不是 ans++;if(aaa==-1)aaa=i;} } } if(ans!=0)cout<<ans<<" "<<aaa; else cout<<"-1";//cout<<n; 检查 ans等于0就输出-1,就是按题目要求 return 0; }

浙公网安备 33010602011771号