14. Longest Common Prefix

  1. 讨论区里的:
    //Sort the array first, and then you can simply compare the first and last elements in the sorted array.
    public String longestCommonPrefix(String[] strs) {
        StringBuilder result = new StringBuilder();
        
        if (strs!= null && strs.length > 0){
        
            Arrays.sort(strs);
            
            char [] a = strs[0].toCharArray();
            char [] b = strs[strs.length-1].toCharArray();
            
            for (int i = 0; i < a.length; i ++){
                if (b.length > i && b[i] == a[i]){
                    result.append(b[i]);
                }
                else {
                    return result.toString();
                }
            }
        return result.toString();
    }

想想实际上就利用了字符串排序的规则。相同的前缀比较完了之后比较不同的。所以有相同前缀的肯定是在一起的。
能想到这种算法真的好有意思啊!!

  1. 我的直接粗暴思路:
string longestCommonPrefix(vector& strs) {
        if (strs.size()==0){
            return "";
        }
        for(int i=0;i

一个个字母比较过去。
不知道排序的算法是怎样的,应该时间复杂度差不多我觉着。

  1. 最后Java中有indexOf的函数。
public String longestCommonPrefix(String[] strs) {  
    if (strs.length == 0) return "";  
        String pre = strs[0];  
    for (int i = 1; i < strs.length; i++)  
        while(strs[i].indexOf(pre) != 0)  
            pre = pre.substring(0,pre.length()-1);  
    return pre;  
}  

你可能感兴趣的:(14. Longest Common Prefix)