个人题解:
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs.length==0) return "";
String s=strs[0];
for(int i=1;i<strs.length;i++){
s=longStr(s,strs[i]);
}
return s;
}
//一个一个比较
//逆向思维:比较前面不等时候的
public String longStr(String str1,String str2){
if(str2==""){
return str2;
}
StringBuffer out=new StringBuffer("");
for(int i=0;i<Math.min(str1.length(),str2.length());i++)
if((str1.charAt(i))==(str2.charAt(i))){
out.append(str1.charAt(i));
}else{
break;
}
return out.toString();
}
}
评论区思路:
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs.length==0)return "";
//公共前缀比所有字符串都短,随便选一个先
String s=strs[0];
for (String string : strs) {
while(!string.startsWith(s)){
if(s.length()==0)return "";
//公共前缀不匹配就让它变短!
s=s.substring(0,s.length()-1);
}
}
return s;
}
}
大佬解法:
String.StartsWith 方法
public boolean startsWith(String prefix, int toffset)
用来判断字符串是否以某一字符串开头 是返回true 否之返回false
太强了!——大佬对于String方法用的太熟了
subString方法
public String substring(int beginIndex, int endIndex)
在字符串中截取 从beginIndex开始 到 endIndex结束 (不包括end) 左闭右开区间