最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
class Solution {
public String longestCommonPrefix(String[] strs) {
/*
按字典序排序
拿最大和最小的字符串,看他们的公共串是什么即可
时间主要是排序O(nlogn),空间O(1)
*/
if(strs.length == 0) return "";
Arrays.sort(strs);
String first = strs[0];
String last = strs[strs.length-1];
int i = 0;
while (i < first.length() && i < last.length() && first.charAt(i) == last.charAt(i)) i++;
String res = first.substring(0, i);
return res;
}
}
class Solution {
public String longestCommonPrefix(String[] strs) {
/*
以第一个字符串为基准,遍历,和第一个
字符串求最长公共前缀
时间O(s)s为所有字符串的长度
空间O(1)
*/
if(strs.length == 0) return "";
Arrays.sort(strs);
String first = strs[0];
for(int i = 1; i < strs.length; i++){
while(strs[i].indexOf(first) != 0){
first = first.substring(0, first.length()-1);
if(first.length() == 0) return "";
}
}
return first;
}
}