解题思路
此处撰写解题思路
/*class Solution {
public String longestCommonPrefix(String[] strs) {
String s="";
int index =0;
int ml = strs[0].length();
for(int i=1;i<strs.length;i++){
if(strs[i].length()<ml){
ml = strs[i].length();
}
}
if(strs.length == 0){
return "";
}
if(strs.length == 1){
return strs[0];
}
for(int i=0; i< strs.length;i++){
for(int j=0; j<ml;j++){
if(strs[0].charAt(j) == strs[i+1].charAt(j)&&index<ml ){
index++;
}
s = strs[0].substring(0,index+1);
return s;
}
}
return s;
}
}
*/
此为错解
此题原本采用在数组内用第一个字符串与其他的相比较,欲采用双重循环,但是在与多个比较时容易出现许多错误,index直接加一当没有一样的时候会d多加一个出错,各种错误不好更改,即应该分情况解题,最好将核心方法与整体分开便于改错。则官解中两个相比写一个方法较为稳妥
代码
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
//将第一个设为最大公共子串
String prefix = strs[0];
int count = strs.length;
for (int i = 1; i < count; i++) {
prefix = longestCommonPrefix(prefix, strs[i]);
if (prefix.length() == 0) {
break;
}
}
return prefix;
} public String longestCommonPrefix(String str1, String str2) {
int length = Math.min(str1.length(), str2.length());
int index = 0;
while (index < length && str1.charAt(index) == str2.charAt(index)) {
index++;
}
return str1.substring(0, index);
}
}