编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"] 输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i]
仅由小写英文字母组成
解题思路:
最小前缀最大不超过最小字符串的长度,所以定义一个min为最小字符串长度。
公共前缀,所有字符串都有,所以可取第一个字符串,将其转化为字符数组,遍历字符数组,嵌套字符串数组,若所有字符串都有该字符则添加该字符到公共前缀字符串中,并用substring()方法截取字符串,从当前字符的后一位开始重新赋值给当前字符串并进入下一次循环;否则则退出循环直接输出。
解题代码:
class Solution {
public String longestCommonPrefix(String[] strs) {
String compre="";
int min=strs[0].length();
//寻找最小长度子串的长度
for(int i=1;i<strs.length;i++){
if(strs[i].length()<min){
min=strs[i].length();
}
}
//将第一个字符串转换为字符数组
char arr[]=strs[0].toCharArray();
loop:
for(int j=0;j<min;j++){
for(int i=1;i<strs.length;i++){
//若存在字符串不包含该字符或该字符所在下标与字符数组下标不同,则退出整个循环
if(strs[i].indexOf(arr[j]+"")!=0)
break loop;
else {
//若包含该字符串则取掉第一个字符
strs[i]=strs[i].substring(1);
}
}
compre+=arr[j];
}
return compre;
}
}
运行结果: