代码如下,只能过2,4测试点,1测试点
td
Td tLWCsrmt
跑出来的结果是
1 0
但是还是无法通过,代码如下
#include<bits/stdc++.h>
using namespace std;
int main() {
string word,doc;
int first=-1,sum=0,spaceSum=0;
getline(cin,word);//读取单词
//cin.ignore(INT_MAX,'\n');
getline(cin,doc);//读取文档
//全部转换为小写字母
for(int i=0; i<doc.size(); i++) {
if(isalpha(doc[i])) {
doc[i]=tolower(doc[i]);
}
}
for(int i=0; i<word.size(); i++) {
if(isalpha(word[i])) {
word[i]=tolower(word[i]);
}
}
int i=0;
while(doc[i]==' ') {//跳过文章前面的空格
i++;
}
for(; i<doc.size(); i++) {//开始从第一个单词开始的第一个字母开始搜索
int equal=1,wordLength=0;//设是否相等和单词长度
for(int k=i; doc[k]!=' '&&doc[k]!='\0'; k++) {//求得单词长度
wordLength++;
}
for(int j=0; j<word.size(); j++) {//如果在word的范围内有字母不同则单词不同
if(doc[i+j]!=word[j]) {
equal=0;
break;
}
}
if(wordLength!=word.size()) {//如果单词长度不同则单词不同
equal=0;
}
if(equal==1&&sum==0) {//记录第一次出现
//cout<<spaceSum+1<<' ';
first=spaceSum;
}
if(equal==1) {//记录出现次数
sum++;
}
equal=1;//initilize
while(doc[i]!=' '&&doc[i]!='\0') {//让i跳到下一个单词的第一个字母
i++;
}
spaceSum++;
}
if(sum>0) {
cout<<sum<<' '<<first;
} else {
cout<<first;
}
return 0;
}
在此感谢大佬们