Under my umbrella.

SKII

Less is more.

力扣题解 14th 最长公共前缀

14th 最长公共前缀

  • 暴力模拟/横向扫描

    根据题意模拟一遍运行过程即可:先求出第一个和第二个串的最长公共前缀,再以此前缀和第三个串求最长公共前缀… ...

    前缀也是一个串的字串,因此要善用string.substring()函数。

    class Solution {
        public String longestCommonPrefix(String[] strs) {
            if(strs == null || strs.length == 0) return "";
            int n = strs.length;
            String prefix = strs[0];
    
            for (int i = 1; i < n; i++) {
                int j = 0;
                while (j < Math.min(prefix.length(), strs[i].length()) && prefix.charAt(j) == strs[i].charAt(j)) {
                    j++;
                }
                prefix = prefix.substring(0, j);
    
                if (prefix.length() == 0) break;
            }
    
            return prefix;
        }
    }
    
  • 暴力模拟/纵向扫描

    进行纵向模拟,外循环用来走进度条,内循环用来切换线程。

    class Solution {
        public String longestCommonPrefix(String[] strs) {
            if (strs == null || strs.length == 0) return "";
            String prefix = strs[0];
    
            for (int i = 0; i < prefix.length(); i++) {
    
                for (int j = 1; j < strs.length; j++) {
                    if(i == strs[j].length() || strs[j].charAt(i) != prefix.charAt(i)) {
                        return prefix.substring(0, i);
                    }
                }
            }
    
            return prefix;
        }
    }
    
posted @ 2020-07-07 09:20  NLYang  阅读(118)  评论(0编辑  收藏  举报