题意:给你一组字符串构成一个字典,问字典中是否存在复合词,复合词的定义为这个词在字典中,并且油这个词分割成的两个词也在字典中。
用map存字典,遍历整个字典,遍历到其中一个字符串的时候,用substr分割这个字符串来判断分割后的两个词是否在字典中。
#include<bits/stdc++.h>
using namespace std;
int main()
{
map<string,int>mp;
string s[120010];
int i=0;
while(cin>>s[i])
mp[s[i++]]=1;
int n=i;
for(int i=0;i<n;i++)
{
for(int j=0;j<s[i].size()-1;j++)
{
string ss=s[i].substr(0,j+1);
string s1=s[i].substr(j+1);
if(mp[ss]&&mp[s1])
{
cout<<s[i]<<endl;
break;
}
}
}
return 0;
}