14. 最长公共前缀
难度
简单
描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串
""
。
示例1
输入: ["flower","flow","flight"]
输出: "fl"
示例2
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
示例3
输入: "4193 with words"
输出: 4193
解释: 转换截止于数字 '3' ,因为它的下一个字符不为数字。
示例4
输入: "words and 987"
输出: 0
解释: 第一个非空字符是 'w', 但它不是数字或正、负号。
因此无法执行有效的转换。
说明:
所有输入只包含小写字母 a-z
。
代码实现
class Solution {
public String longestCommonPrefix(String[] strs) {
StringBuilder prefix = new StringBuilder();
if (strs == null || strs.length == 0) {
return prefix.toString();
}
Arrays.sort(strs);
char[] minChars = strs[0].toCharArray();
char[] maxChars = strs[strs.length - 1].toCharArray();
int minLen = Math.min(minChars.length, maxChars.length);
for (int i = 0; i < minLen; i++) {
if (minChars[i] == maxChars[i]) {
prefix.append(minChars[i]);
} else {
return prefix.toString();
}
}
return prefix.toString();
}
}