14. 最长公共前缀

163 阅读1分钟

image.png

代码

class Solution {
    public String longestCommonPrefix(String[] strs) {
        StringBuffer res = new StringBuffer();
        int j = 0;
        while (j < strs[0].length()) {// 选取第一个字符串为基准
            char c = strs[0].charAt(j);
            int count = 0; // 计数,有多少个字符串中前缀为c
            for (int i = 0; i < strs.length; i++) {
                if (j < strs[i].length() && strs[i].charAt(j) == c) {
                    count++;
                }
            }
            if (count == strs.length) { // 每个字符串中都存在这个字符
                res.append(c);
                j++;// 看下一个字符
            } else {
                break;// c在某个字符串中不存在,退出循环
            }
        }
        return res.toString();
    }
}

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs.length == 0) return "";//特判
        StringBuffer sb = new StringBuffer();
        for (int cur = 0; cur < strs[0].length(); cur++) {
            char c = strs[0].charAt(cur);//以strs[0]为基准,一开始c为‘f’
            boolean flag = true;
            for (int i = 0; i < strs.length; i++) {
                //当前字符在某个字符串中不存在,或者这个字符的位置超过当前字符串长度了
                if (cur >= strs[i].length() || strs[i].charAt(cur) != c) {
                    flag = false;
                    break;
                }
            }
            if (flag) {//当前字符c在各个字符串都存在
                sb.append(c);//加到res中
            } else {
                break;
            }
        }
        return sb.toString();
    }
}