幾道關於面試的題目

實現一個算法,肯定一個字符串的全部字符是否所有相同?算法

最想一想到的方法是經過比較該字符串的每個字符,算法的時間複雜度爲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;
		
	}
相關文章
相關標籤/搜索