實現一個算法,肯定一個字符串的全部字符是否所有相同?算法
最想一想到的方法是經過比較該字符串的每個字符,算法的時間複雜度爲0(n2)次。數據結構
另外一種辦法是能夠利用set數據結構來實現,由於在set中不容許存在重複的字符。有一個有意思的地方是在進行判斷前能夠先判斷字符串的長度,若是字符串的長度大於256,那麼咱們能夠確定該字符串中確定有重複的字符。blog
Python代碼實現以下:字符串
a = "11fdwqdgf5hg56gfwdqwsdqwd"; #採用set的方法 def judge(): t = set(a); N = len(a); if(t == N): return ('TRUE'); else: print(t); return ('FALSE'); #比較字符串中的每個字符 def judge2(): N = len(a); for i in range(N): s = a[i]; for j in range(i,N,1): if(s == a[j]): return ('FALSE'); return "true" if __name__ == "__main__": print(judge()); print(judge2());
C++代碼:string
bool judge(const string str){ vector<bool> char_set(256,false); for (int i = 0;i<str.length();i++){ int val = str[i]; cout<<"val:"<<char_set[val]<<endl; if(char_set[val]){ return false; }else{ char_set[val] = true; } } return true; }
Java代碼:class
public boolean judge(final String str){ if (str.length() > 256){ return false; }else{ boolean[] char_set = new boolean[256]; for (int i= 0;i<str.length();i++){ int val = str.charAt(i); if (char_set[val]){ return false; } char_set[val] = true; } } return true; }