实现一个算法,肯定一个字符串的全部字符是否所有相同?算法
最想一想到的方法是经过比较该字符串的每个字符,算法的时间复杂度为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; }