几道关于面试的题目

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

最想想到的方法是通过比较该字符串的每一个字符,算法的时间复杂度为0(n2)次。

另一种办法是可以利用set数据结构来实现,因为在set中不允许存在重复的字符。有一个有意思的地方是在进行判断前可以先判断字符串的长度,如果字符串的长度大于256,那么我们可以肯定该字符串中肯定有重复的字符。

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++代码:

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代码:

	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;
		
	}

 

posted @ 2014-10-14 22:55  CBDoctor  阅读(793)  评论(0编辑  收藏  举报