14_最长公共前缀_LongestCommonPrefix

题目

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

示例 1:

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

示例 1:

输入: [“flower”,”flow”,”flight”]
输出: “fl”

示例 2:

输入: [“dog”,”racecar”,”car”]

输出: “”
解释: 输入不存在公共前缀。
说明:

所有输入只包含小写字母 a-z 。

解题思路

需要一个字符串作为模板,判断后面的字符串是否以这个模板为前缀,如果判断为false,则将模板字符串去掉最后一位再比较,如果任然为false,则再删去一位,递归调用至判断为true。这里使用的是第一个字符串为模板。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0){
return "";
}
if (strs[0].isEmpty() && strs.length == 1) {
return "";
}
String shortest = strs[0];//以第一个字符串为准做对比
for (int i = 0; i < strs.length; i++) {
shortest = this.getShortest(strs[i], shortest);
}
return shortest;
}
private String getShortest(String s, String shortest) {
if (s.indexOf(shortest) != 0) {
shortest = shortest.substring(0, shortest.length() - 1);
if (shortest.isEmpty()) {
return "";
}
shortest = getShortest(s, shortest);//递归调用直到符合标准
}
return shortest;
}

问题链接