题目的意思是给定一个单词,找到这个单词在题目中出现的位置和出现次数,我们输入文章的时候,只用cin的话不能全部输入,我们必须要用getline,但是,我们输入完最开始的单词之后后面有个换行符,我们需要先把它读走

那如何找出现的位置呢?我们直接用find显然不太合适,因为有可能要查找的单词包含在某一个大单词里面,我们可以对之前的字符串进行预处理,我们要查找的是空格单词空格,我们把文章首尾都加上空格,把要查找的单词也变成空格+单词+空格,这样我们再查找的时候就是正确的了

好的,话不多说我们来做一下吧

#include <iostream>
#include <cstring>
using namespace std;


int main()
{
	string s;cin >> s;
	char c = getchar();
	string t;
	getline(cin,t);	
	s=' '+ s+' ';
	t = ' ' + t + ' ';
	int f;
	int pos = 0;
	for(int i = 0;i<s.size();i++)
	{
		s[i] = tolower(s[i]);
	}
	for(int i = 0;i<t.size();i++)
	{
		t[i] = tolower(t[i]);
	}
	if(t.find(s)!=-1)
	{
		f = t.find(s);
		pos = f+1;
	}
	else{
		cout << "-1" << endl;
		return 0;
	}
	int cnt = 1;
	while(t.find(s,pos)!=-1)
	{
		pos=t.find(s,pos);
		cnt++;
		pos++;
	}
	cout << cnt << " " << f << endl;
	
	
	
	return 0;
}

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐