题目
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
解题思路
如果数组为空或者某个字符串为空,则直接返回"";否则将第一个字符串作为最长公共前缀开始与每个字符串的每个字符从前向后开始比较,得到最长前缀。
代码
public static String longestCommonPrefix(String[] strs) {
if(strs.length == 0) {
return "";
}
for (String str : strs) {
if(str.equals("")){
return "";
}
}
char[] res = strs[0].toCharArray();
for (int i = 1; i < strs.length; i++) {
char[] chs = strs[i].toCharArray();
int len = res.length < chs.length ? res.length : chs.length;
int end = len;
for (int j = 0; j < len; j++) {
if(res[j] == chs[j]) {
continue;
}else {
end = j;
break;
}
}
res = Arrays.copyOf(res, end);
}
if(res.length == 0) {
return "";
}
return String.valueOf(res);
}
如果觉得对你有帮助,就给博主点个赞吧!