力扣题解 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; } }