本题为LeetCode中第14道题
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:1
2输入: ["flower","flow","flight"]
输出: "fl"
示例 2:1
2
3输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:1
所有输入只包含小写字母 a-z 。
1 | public class Y_14_最长公共前缀 { |
这道题呢其实比较简单,思路也很清晰,我们只需拿到第一个字符串,挨个取其第1个到最后一个字符,然后挨个和后面的比较,比如:你拿到第一个字符串的第一个字符,然后循环遍历取后面字符串的第一个字符,然后比较,然后拿第一个字符串的第2个字符,和后面的挨个比较即可
再来看另一道解法,效率会快很多1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16public static String longestCommonPrefix_2(String[] strs) {
if(strs.length==0 || strs==null){
return "";
}
char[] c = strs[0].toCharArray();
StringBuilder sb = new StringBuilder();
for(int i = 0;i<c.length;i++){
for(String s :strs){
if(s.charAt(i)!=c[i] || i>s.length()){
return sb.toString();
}
}
sb.append(c[i]);
}
return sb.toString();
}
思路跟前面的一样,不过是在处理上做了手脚,还是很简单的!!!