50分WA求调!谢谢!(悬棺)
查看原帖
50分WA求调!谢谢!(悬棺)
1020629
The_Leaf_of_Wind楼主2023/12/13 19:11

记录

/*
题目大意:给定一个字符串,请你输出它在给定的字符串中出现的次数和第一次出现的位置
(不区分大小写,如果给定单词仅是文章中某一单词的一部分则不算匹配)
*/
#include<bits/stdc++.h>
using namespace std;
string s,s1;//s是单词,s1是文章
bool t=0;//哨兵
int first,ans;//first是第一次的位置,ans是次数
void find()
{
	int k=int(s1.find(s)); //s.find(x)返回x的第一个字符的索引 
	if(k==-1) return ;//已经找不出了,就跳出
	if(t==0&&(s1[k-1]==' '||k==0)&&(s1[k+s.size()]==' '||k+s.size()==s1.size())){//判断是否独立成词(第一次)
		t=1;
		first=k;
		ans++;
	}
	else if((s1[k-1]==' '||k==0)&&(s1[k+s.size()]==' '||k+s.size()==s1.size())) ans++;//判断是否独立成词
	s1.erase(0,k+s.size()); //s.erase(x,y)表示将字符串s从x位置起删除y个字符
	find();//找下一个
	return ;
}
int main(){
	getline(cin,s);
	getline(cin,s1);
	for(int i=0;i<s.size();i++){
		s[i]=tolower(s[i]); //tolower(x)如果x是大写字母,将其转换成小写字母  
	}
	for(int i=0;i<s1.size();i++){
		s1[i]=tolower(s1[i]);
	}
	find();//找
	if(t==0){//如果一个也没有找到
		cout<<"-1";
		return 0;
	}
	cout<<ans<<" "<<first;
	return 0;
}

求大佬调,谢谢!

2023/12/13 19:11
加载中...