勵志用少的代碼做高效的表達
題目(提交)鏈接→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()函數妙用