a ahat hat hatword hziee word
ahat hatword
题 意:找出一个单词,前半部是一个出现过的单词,后半部也是,记住,要严格满足这个条件
所以,其实也就是先查找一个单词的是否有前缀,再用这个单词除去前缀的部分查找是否存在一个这样的单词
CODE:
#include <iostream> #include <string> #include <map> using namespace std; map <string, int> mp; string str[50005]; int main() { int n = 0, j, len; while ( cin >> str[n] ) //输入所有的单词 mp[str[n++]] = 1; //构成映射 for ( int i = 0; i < n; ++i ) { len = str[i].size(); for ( j = 1; j < len; ++j ) { string s1 ( str[i], 0, j ); //分割单词 string s2 ( str[i], j, len - j ); if ( mp[s1] == 1 && mp[s2] == 1 ) //在单词中查找存在 { cout << str[i] << endl; //输出该单词 break; } } } return 0; }
原文地址:http://blog.csdn.net/acm_baihuzi/article/details/41554027