编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 " "。示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: " "
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
思路:因为是最长公共前缀,所以找到最短的那个字符串作为最长公共前缀的待定值,然后用别的字符串的同等长度前缀去对比它,如果,等于,换下一个比对,如果不等,那么切掉这个待定值尾部的一个字符,直到这个待定值为空字符串或者遍历字符串数组完成。
class Solution {
public String longestCommonPrefix(String[] str) {
int minSize = Integer.MAX_VALUE;
int minIndex = 0;
String ans = "";
for(int i = 0;i<str.length;i++){
if(str[i].length()<minSize){
minSize = str[i].length();
minIndex = i;
ans = str[i];
}
}
for(int i = 0; i< str.length;i++){
int temp = i;
for(;;){
if(str[temp].substring(0,ans.length()).equals(ans)){
break;
}
if(ans.length()>0){
ans = ans.substring(0,ans.length()-1);
}else{
return ans;
}
}
}
return ans;
}
}