题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
思路:先找出最短的最短的字符串赋给s,遍历数组与s进行前缀比对,如果比对失败,则截取s除最后一位以外的字符,结束当前遍历。直到与数组中最后一个字符串比对成功。
class Solution {
public String longestCommonPrefix(String[] strs) {
int min=0;
if (strs == null || strs.length == 0) {
return "";
}
//选出最短的字符串
for(int i=0;i<strs.length;i++){
if(strs[min].length()>strs[i].length()){
min=i;
}
}
String s=strs[min];
for(int i=0;s.length()>0;){
for(int j=0;j<strs.length;j++){
if(!strs[j].startsWith(s)){//如果数组中有字符串比对失败,则去掉s最后一位,结束当前循环
s=s.substring(0,s.length()-1);
break;
}else if(j==strs.length-1) return s;//直到最后一个字符串比对成功,返回s
}
}
return "";
}
}
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix