編寫一個函數來查找字符串數組中的最長公共前綴。
如果不存在公共前綴,返回空字符串 " "。示例 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;
}
}