15行代碼AC——習題5-5 複合詞(Compound Words, UVa 10391)——解題報告

勵志用少的代碼做高效的表達


題目(提交)鏈接→UVA-10391


本題實質是#include<string>頭文件的substr()字符串分割函數與#include<algorithm>頭文件的find()函數聯用。

基本思路:

單詞(字符串)存入容器後,逐位分解(substr()),查找(find())按每一位分解後其前後分別組成的字符串是否在容器中出現。 若皆出現,輸出即可。
其中find()用法參考→懶癌的福音——algorithm頭文件函數全集

代碼:

#include<bits/stdc++.h>
using namespace std;
int main() {
	set<string>ss;			//查詢 
	string s; 
	while(cin >> s) ss.insert(s);
	for(auto p : ss) {	//p是每一個字符串 
		bool isCpdword = false;
		for(int i = 0; i < p.size()-1 && !isCpdword; i++)  //遍歷左右組合 
			if(ss.find(p.substr(0, i+1)) != ss.end() && ss.find(p.substr(i+1)) != ss.end())
				isCpdword = true; 
		if(isCpdword) cout << p << endl; 	//?後的語句湊數用,否則編譯錯誤。 
	}
    return 0;
} 

收穫:

1、substr() 分割函數
2、find()函數妙用


撥雲見日,未來可期。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章