leetcode-14-easy

Longest Common Prefix
思路一: 取第一个字符串为基准,依次对比剩余的字符串,取公共串

private static int commonPrefix(char[] arr1, char[] arr2) {
int n = Math.min(arr1.length, arr2.length);

int count = 0;
for (int i = 0; i < n; i++) {
    if (arr1[i] != arr2[i]) {
        break;
    } else {
        count++;
    }
}

return count;
}

public static String longestCommonPrefix(String[] strs) {
char[] chars = strs[0].toCharArray();
int n = chars.length;
for (int i = 1; i < strs.length; i++) {
    n = Math.min(commonPrefix(chars, strs[i].toCharArray()), n);

    if (n <= 0) break;
}

return strs[0].substring(0, n);
}

思路二: 先最字符串数组排序,最后比较首尾两个字符串的公共串

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

        Arrays.sort(strs);
        String begin = strs[0];

        int n = 0;
        String end = strs[strs.length - 1];
        for (int i = 0; i < Math.min(begin.length(), end.length()); i++) {
            if (begin.charAt(i) != end.charAt(i)) {
                break;
            }
            n++;
        }

        return begin.substring(0, n);
    }
posted @ 2022-10-10 18:02  iyiluo  阅读(15)  评论(0)    收藏  举报