14. Longest Common Prefix

14. Longest Common Prefix

题目

写一个函数来找到字符串数组中的最长公共前缀字符串。
如果没有公共前缀,返回一个空字符串 “”。
例1:
Input: [“flower”,”flow”,”flight”]
Output: “fl”

例2:
Input: [“dog”,”racecar”,”car”]
Output: “”
解释:在输入字符串数组中,没有公共前缀。
注:所有给出的输入都是小写字母a-z.

代码块

class Solution {
    public static String longestCommonPrefix(String[] strs) {
        if (strs.length == 0)
            return "";
        if (strs.length == 1)   
            return strs[0];

        String strMin = strs[0];
        for(int i = 0; i < strs.length; i++){

            strMin = (strs[i].length() >= strMin.length())? strMin : strs[i]; 
        }
        for(int i = 0; i < strMin.length() ; i++){
            for(int j = 0; j < strs.length; j++){
                if(strs[j].charAt(i) != strMin.charAt(i)){
                    return strMin.substring(0, i);
                }
            }
        }
        return strs[0].substring(0, strMin.length());

    }
}

代码分析

这个题看似很简单,我先理解的是就以第一个字符串为参考,然后后面的都跟它比较,写出来不是很理想。整理思路后,
应该找出数组中最短的字符串(strMin.lenggth)用i来控制位数,然后按列来进行比较(strs.length)(第j个字符串的第i位)。
如果不相等,就返回子字符串;
如果不进入循环,比如[“”,”c”],返回substring(0,0)为空。
注意i,j的含义即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章