0
已解决
张睿杰
初级天翼
初级天翼
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int main() { char a[501],b[101]; int len,len2,ans=0,m=0,y=0,k=-1; gets(a); gets(b); len=strlen(a); len2=strlen(b); for(int i=0;i<=len-1;i++) { if(a[i]>='A'&&a[i]<='Z') a[i]+=32; } for(int i=0;i<=len2-1;i++) { if(b[i]>='A'&&b[i]<='Z') b[i]+=32; } for(int i=0;i<=len-1;i++) { if(a[i]==' ') y++; if(a[i]!=b[m]) m=0; else if(a[i]==b[m]) { m++; } if(m==len2) { if(k==-1) k=y+1; m=0; ans++; } } if(ans==0) cout<<"-1"<<endl; else cout<<k<<' '<<ans<<endl; }
只有四十
0
已采纳
朱宗晔
初级光能
初级光能
我的代码,只有80分。仅供参考
string str[101010];
string str1;
char s;
int i,ans,first;
int main(){
while(s != '\n'){
i ++;
cin >> str[i];
for(int j = 0;j <= str[i].size() - 1;j ++){
if(str[i][j] >= 'A' && str[i][j] <= 'Z'){
str[i][j] += 32;
}
}
s = getchar();
}
cin >> str1;
for(int j = 0;j <= str1.size() - 1;j ++){
if(str1[j] >= 'A' && str1[j] <= 'Z') str1[j] += 32;
}
for(int j = 1;j <= i;j ++){
if(str1 == str[j]){
if(first != 0){
ans ++;
}
else{
first = j;
ans ++;
}
}
}
if(first == 0) cout << -1 << endl;
else cout << first << " " << ans << endl;
0
陆姗姗
资深守护
资深守护
for(int i=0;i<=len-1;i++) { if(a[i]==' ') y++; if(a[i]!=b[m]) m=0; else if(a[i]==b[m]) { m++; } if(m==len2) { if(k==-1) k=y+1; m=0; ans++; } }
你这个for循环的逻辑不对
最主要的点是你没有考虑如果b是a中的部分单词的话怎么办,题目中的意思是这种情况下不是一个单词,所以不算,你的代码里这种情况是算找到了的。举个例子,如果字符串a中的某个单词是 abbde ,字符串b是abbd,这种情况不算找到了。
0
0
0
0
陶梓锐
新手光能
新手光能
string lwr(string s) { int l=s.size(); for(int i=0;i<l;i++) { if(s[i]>='A'&&s[i]<='Z') s[i]+=32; } return s; }
陶梓锐在2018-01-13 15:02:32追加了内容
a=lwr(a); s=lwr(s); s+=' '; while(true) { n=s.substr(0,s.find(" ",0)); if(n==a) { flag=true; i++; } if(!flag)x++; s=s.erase(0,s.find(" ",0)+1); if(s.empty()) { if(i==0) { cout<<-1; return 0; } break; } }
核心代码,仅供参考