题目描述
力扣14题(https://leetcode-cn.com/problems/longest-common-prefix/)
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
解法一:横向查找
两两比较,总是找出本次比较的两个字符串的最长公共子串
class Solution {
public String longestCommonPrefix(String[] strs) {
int l=strs.length;
if(l==0){
return "";
}
int min=strs[0].length();
for(int i=1;i<l;i++){
int temp=strs[i].length();
if(temp<min){
min=temp;
}
else{
continue;
}
}
String c=strs[0].substring(0,min);
for(int j=1;j<l;j++){
if(c.length()==0){
break;
}else{
c=compare(c,strs[j]);
}
}
return c;
}
public String compare(String str1,String str2){
int index=0;
for(int i=0;i<str1.length();i++){
if(str1.charAt(i)==str2.charAt(i)){
index++;
}
else{
break;
}
}
return str1.substring(0,index);
}
}
解法二:纵向扫描
比较每个字符串中的每一位,看是否相同
class Solution {
public String longestCommonPrefix(String[] strs) {
int l=strs.length;
if(l==0){
return "";
}
int min=strs[0].length();
for(int i=1;i<l;i++){
int temp=strs[i].length();
if(temp<min){
min=temp;
}
else{
continue;
}
}
String c=strs[0].substring(0,min);
for(int j=0;j<min;j++){
char s=strs[0].charAt(j);
for(int m=0;m<l;m++){
if(s!=strs[m].charAt(j)){
return strs[0].substring(0,j);
}
}
}
return c;
}
}