LeetCode No14 最长公共前缀

题目

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

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

示例 1:

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

示例 2:

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

提示:

1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成

思路

行遍历

要求公共前缀,可以先求第一个字符串和第二个字符串的公共前缀s,然后再用s去和第三个字符串求一次公共前缀并重新赋给s,以此类推,直至字符数组结束。

列遍历

字符串数组可以看成是一个字符矩阵,可以按照行扫描,也可以按照列去扫描。

AC代码

行遍历

点击查看代码
class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs == null || strs.length == 0) {
            return "";
        }
        String prefix = strs[0];
        int count = strs.length;
        for (int i = 1; i < count; i++) {
            prefix = longestCommonPrefix(prefix, strs[i]);
            if (prefix.length() == 0) {
                break;
            }
        }
        return prefix;
    }

    public String longestCommonPrefix(String str1, String str2) {
        int length = Math.min(str1.length(), str2.length());
        int index = 0;
        while (index < length && str1.charAt(index) == str2.charAt(index)) {
            index++;
        }
        return str1.substring(0, index);
    }
}

列遍历

点击查看代码
class Solution {
    public String longestCommonPrefix(String[] strs) {
        if( strs.length == 0 ) {
            return "";
        }
        char[][] chars = new char[205][205];
        StringBuilder sb = new StringBuilder();
        int row = 0;
        int col = 205;
        int len = 0;
        for(String str : strs) {
            chars[row++] = str.toCharArray();
            col = Math.min(col, str.length());
        }
        for(int i=0; i<col; i++) {
            char ch = chars[0][i];
            boolean flag = true;
            for(int j=0; j<row; j++) {
                if( ch!=chars[j][i] ) {
                    flag = false;
                    break;
                }
            }
            if( flag ) {
                sb.append(ch);
            } else {
                break;
            }
        }
        return sb.toString();
    }
}
posted @ 2022-04-19 20:46  Asimple  阅读(18)  评论(0编辑  收藏  举报