14. 最长公共前缀

横向扫描

+=拼接字符串的性能要低于substring,用了一个substring直接从8ms降到了1ms

class Solution {
    public String longestCommonPrefix(String[] strs) {
        //最长公共前缀长度
        int length = strs[0].length();
        int size = strs.length;
        String first_word = strs[0];
        int num = 0;
        //利用第一个单词和后面的单词做前缀对比
        for(int i = 1; i < size; i++){
            if(length == 0) break;
            for(int j = 0; j < Integer.min(strs[i].length(),first_word.length()); j++){
                if(strs[i].charAt(j) == first_word.charAt(j))
                    num++;
                else break;
            }
            length = Integer.min(length,num);
            num = 0;
        }
        return first_word.substring(0,length);

    }
}

纵向扫描

class Solution {
    public String longestCommonPrefix(String[] strs) {
        int number = strs.length;
        int pre_num = 0;
        for(int i = 0; i < strs[0].length(); i++){
            for(int j = 0; j < number; j++){
                if(i >= strs[j].length() || strs[j].charAt(i) != strs[0].charAt(i))
                    return strs[0].substring(0,pre_num);
            }
            pre_num++;
        }
        return strs[0].substring(0,pre_num);
    }
}
posted @ 2025-04-14 21:00  破忒头头  阅读(10)  评论(0)    收藏  举报