zoukankan      html  css  js  c++  java
  • 几道关于面试的题目

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

    最想想到的方法是通过比较该字符串的每一个字符,算法的时间复杂度为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;
    		
    	}
    
  • 相关阅读:
    5. Longest Palindromic Substring
    24. Swap Nodes in Pairs
    23. Merge k Sorted Lists
    22. Generate Parentheses
    21. Merge Two Sorted Lists
    20. Valid Parentheses
    19. Remove Nth Node From End of List
    18. 4Sum
    17. Letter Combinations of a Phone Number
    14. Longest Common Prefix
  • 原文地址:https://www.cnblogs.com/CBDoctor/p/4025372.html
Copyright © 2011-2022 走看看