场景:
力扣刷题
问题描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
解法一:
参考大佬的想法(前拉后锯),很妙的写法,题解写在注释里了
public static String longestCommonPrefix(String[] strs) {
//边界判断
if(strs==null||strs.length==0) return "";
//假装下标为0的元素是公共的前后缀
String res=strs[0];
int len=strs.length;
int i=1;
//遍历从1往后的元素
while(i<len) {
//关键 如果res[1] 没有就不断分隔 res ,直到res分隔成相等
while(strs[i].indexOf(res)!=0) res=res.substring(0,res.length()-1);
//继续下去
i++;
}
//返回最长公共前缀
return res;
}
运行效果: