LeetCode每日1题 (*/200):
前言:
- 本模块记录力扣每日一刷的解题过程,以及小结.
内容:
问题描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
注意:无
示例:
1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀
提示:
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
解题思路:
1.简单题用直接法:略
实现:
两种解题方式记录, longestCommonPrefix3效率最快.
//1.1.1
public String longestCommonPrefix1(String[] strs) {
String prefix="";
String sub="";
int j=1;
boolean flag=true;
for (int i = 0; i <=strs[0].length(); i++) {
sub=strs[0].substring(0,i);
j=0;
while(true){
if(j<=strs.length-1 && strs[j].startsWith(sub)){
j++;
}else if(j==strs.length){
prefix=sub;
System.out.println(prefix);
break;
}else{
break;
}
}
}
return prefix;
}
//1.1.2
public String longestCommonPrefix2(String[] strs) {
String prefix="";
String minPre="";
String sub="";
int j=1;
boolean flag=true;
for (int i = 0; i <=strs[0].length(); i++) {
sub=strs[0].substring(0,i);
j=0;
while(true){
if(j<=strs.length-1 && strs[j].startsWith(sub)){
j++;
}else if(j==strs.length){
prefix=sub;
System.out.println(prefix);
break;
}else{
flag=false;
break;
}
}
if(flag==true){
minPre=prefix;
}else{
return minPre;
}
}
return prefix;
}
//1.2
public String longestCommonPrefix3(String[] strs) {
if(strs.length==0) return "";
String sub=strs[0];
for(String str:strs){
while(!str.startsWith(sub)){
if(sub.length()==0) return "";
sub=sub.substring(0,sub.length()-1);
}
}
return sub;
}
小结:
水 , 巧.