【 UVA - 10391 】 Compound Words (复合词) map

题目链接

代码:

#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
int main()
{
    
    
	map<string,int> m; //标记字符串是否出现过
	vector<string> v; //存输入的字符串
	string s;
	
	while(cin>>s) 
	{
    
    
		m[s]=1; //标记字符串出现过
		v.push_back(s);
	}
	
	for(int i=0;i<v.size();i++)
	{
    
    
		int j=0; //从头开始,把字符串不断分割成两部分
		while(j++<v[i].size()-1)
		{
    
    
			string ss=v[i];
			if(m[ss.substr(0,j)] && m[ss.substr(j,v[i].size()-j)]) //前后部分都存在 即为复合词
			{
    
    
				cout<<v[i]<<endl;
				break;
			}
		}
	}
   	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_45260385/article/details/108319239