几道关于面试的题目

实现一个算法,肯定一个字符串的全部字符是否所有相同?算法

最想一想到的方法是经过比较该字符串的每个字符,算法的时间复杂度为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;
		
	}