题目:最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
说明:
所有输入只包含小写字母 a-z
。
public String longestCommonPrefix3(String[] strs) { if (strs == null || strs.length == 0) return ""; if (strs.length == 1) return strs[0]; int length = strs[0].length(); for (String str : strs) { length = Math.min(length, str.length()); } if (length == 0) return ""; StringBuilder result = new StringBuilder(length); for (int j = 0; j < length; j++) { for (int i = 1; i < strs.length; i++) { if (strs[i].charAt(j) != strs[0].charAt(j)) return result.toString(); } result.append(strs[0].charAt(j)); } return result.toString(); }
边界值的判断每次都要慎重考虑,我这里考虑了strs == null,strs.length == 0,1的情况
变量注释:
length //strs最小的字符串长度,最大公共前缀的长度<=length,若length == 0,返回""
result //存放最后的结果,最大公共前缀String
核心思路:
每次遍历strs所有字符串的第j个字符,都一样就把strs[0]的第j个字符放进result
如果有一个不同,这个字符以及后面的字符都不属于最大公共前缀,直接return result.toString()