編寫一個函數來查找字符串數組中的最長公共前綴,如果不存在公共前綴,返回空字符串 ""。
示例 1:
輸入: ["flower","flow","flight"]
輸出: "fl"
示例 2:
輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。
說明:
所有輸入只包含小寫字母 a-z 。
class Solution {
public String longestCommonPrefix(String[] strs) {
String s="";
int judge=1;
if(strs.length==0){//數組爲空直接返回""
return s;
}
for(int i=0;i<strs[0].length();i++){
char a=strs[0].charAt(i);//直接選擇第一個數組元素,依次取這個字符串的字符
for(int j=0;j<strs.length;j++){
if(i>=strs[j].length()){//因爲每個字符串長度不同,防止溢出
judge=0;
break;
}
if(a!=strs[j].charAt(i)){
judge=0;//只要存在不同,直接退出
break;
}
else{
if(j==strs.length-1){
s=s+a;
}
}
}
if(judge==0){
break;
}
}
return s;
}
}
找出一個字符串數組中最長公共前綴字符串
1.水平掃描
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0) return "";
String prefix = strs[0];
for (int i = 1; i < strs.length; i++)
while (strs[i].indexOf(prefix) != 0) { \\返回一個整數值,指出 String 對象內子字符串的開始位置。如果沒有找到子字符串,則返回-1。
prefix = prefix.substring(0, prefix.length() - 1); \\子字符串開始位置不爲0則縮小子字符串,再進行對比
if (prefix.isEmpty()) return "";
}
return prefix;
}
2.垂直掃描
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0)
return "";
for (int i = 0; i < strs[0].length() ; i++){
char c = strs[0].charAt(i);
for (int j = 1; j < strs.length; j ++) {
if (i == strs[j].length() || strs[j].charAt(i) != c)
return strs[0].substring(0, i);
}
}
return strs[0];
}