14. 最长公共前缀

121 阅读1分钟

最长公共前缀

这些简单题,做起来真的是开心啊,不过今天的简单题我整的有点想吐,我的时间复杂度应该是O(N^3)这个提交不成功,让我很惊喜。然后我在评论区里面发现了一个十分有参考价值的结果。

我的解答

public String longestCommonPrefix(String[] strs) {
    boolean res = true;
    String temp = strs[0];
    int count = 0;
    while (res) {
        lab:for (int j = 1; j < temp.length(); j++) {
            for (int i = 0; i < strs.length; i++) {
                if(strs[i].length() < temp.length()){res = false;break lab;}
                if (!temp.substring(0,j).equals(strs[i].substring(0,j))) {
                     res = false;
                     break lab;
                }
            }
            count ++;
        }

    }
    if (count > 0) {
        return temp.substring(0,count);
    }
    
    return "";

}

路人大佬的解答

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if(strs.length==0)return "";
        //公共前缀比所有字符串都短,随便选一个先
        String s=strs[0];
        for (String string : strs) {
            while(!string.startsWith(s)){
                if(s.length()==0)return "";
                //公共前缀不匹配就让它变短!
                s=s.substring(0,s.length()-1);
            }
        }
        return s;
    }
}

这种解答,一看就是对这个问题的思考角度不一样,确实是一个非常强的对数据的处理是一种很清晰的做法。