14. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。

lass Solution {
    public String longestCommonPrefix(String[] strs) {
        
        int len = strs.length;
        
        //此时数组为空
        if(len == 0 ) 
            return "";
        
        //此时数组只有一个字符串
        if(len == 1) 
            return strs[0];
        
        //初始化 找出长度最小的字符串 作为比较目标
        int minIndex = 0;
        int minSize = strs[0].length();
        
        for(int i = 1; i < strs.length; i++) {
            if(minSize > strs[i].length()) {
                minSize = strs[i].length();
                minIndex = i;
            }
        }
        String temp="",temp1;
        int j ;
        for(int i = minSize; i >= 0; i--) {
            
             temp = strs[minIndex].substring(0,i);
            
            //比较开始
            for( j = 0; j < strs.length; j++) {
                temp1 = strs[j].substring(0,i);
                
                if(!temp1.equals(temp)) 
                    break;
            }
            
            if(j == strs.length) 
                return temp;
        }
        
        return "";
    }
}

 

C++:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        if(strs.size() == 0)
            return "";
        if(strs.size() == 1) 
            return strs[0];
        
        int minSize = strs[0].length();
        
        int minIndex = 0;
        
        for(int i = 0; i < strs.size(); i++) {
            if(minSize > strs[i].length()) {
                minSize = strs[i].length();
                minIndex = i;
            }
        }
        
        int j;
        string str1 = "";
        
        //逐个比较
        for(int i = 0; i < minSize; i++ ) {
            
            for(j = 0; j < strs.size(); j++) 
                if(strs[minIndex][i] != strs[j][i]) return str1;
            
            //表示该字符是公共的子串之一
            str1 += strs[minIndex][i];
        }
        
        return str1;
    }
};

 

posted @ 2018-10-08 22:03  听说这是最长的名字了  阅读(706)  评论(0编辑  收藏  举报