題意:輸入一些單詞,找出所有滿足如下條件的單詞:該單詞不能通過字母重排,得到輸入文字的另外乙個單詞。在判斷是否滿足條件時,字母不分大小寫,但在輸出時應保留輸入的大小寫,按字典序排列。
題解:先對輸入的單詞進行小寫化,然後進行排序,如果排序後的字串相同,那麼就剔除。此處建議用map型別 注(map中的int會自動初始化為0)
ac**:第一種:結構體加兩個for迴圈,不建議,**長又複雜度高(n*n)
#include#include#include#include#include#includeusing namespace std;
struct str
;void zu(str &s)
int main()
for(int i=1; i<=k; i++)
}for(int i=1; i<=k; i++)
if(strin[i].flag==0)
vec.push_back(strin[i].s);
sort(vec.begin(),vec.end());
for(vector::iterator it=vec.begin(); it!=vec.end(); it++)
cout<<*it
}
改進後用map統計(複雜度僅為k*n)
#include
#include
#include
#include
#include
using namespace std;
mapm;
vectork;
vectorans;
string zu(string ss)
int main()
for(vector::iterator it=k.begin();it!=k.end();it++)
sort(ans.begin(),ans.end());
for(vector::iterator it=ans.begin();it!=ans.end();it++)
return 0;
}
檢查乙個string裡面是否有重複的字元
sol1 使用two loops迴圈,比如str 1.n 對於第乙個字元,檢查後面的,如果重複,返回false,如果沒有乙個元素和第乙個字元重複,就繼續檢查str 2 一次類推下去。這個辦法的時間複雜度為o n 2 sol2 使用雜湊表,我們將每乙個character hash 到乙個雜湊表中,檢查...
檢查string是否為double
之前寫的方法,使用try catch來處理 如果能捕獲異常就說明問題 public bool checklegal foreach control c in groupbox2.controls catch return flag 第二種方法,使用double的tryparse方法,根據返回值來處理...
檢查乙個列表是否有重複元素
像計算機科學家一樣思考python 第10章練習10 7 編寫乙個名為has duplicates的函式接收乙個列表,當其中任何乙個元素出現多於一次時返回true。它不應當修改原始列表。自己實現的 用while迴圈 def has duplicates t new t sorted t index ...