一、题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i]
仅由小写英文字母组成
二、实现思想
String字符串原生方法startWith(a)可以判断该字符串是否由a作为起始部分。
所以我们只需要每次去调用startWith方法,去判断该字符串是否由a作为开头,如果不是就从后往前减少一位字符,然后继续判断,直到是由a作为开头结束循环。
三、代码实现
public static void main(String[] args) {
String [] strs = new String[]{"flower","flawer","flower","flower"};
String str = longestCommonPrefix(strs);
System.out.println(str);
}
public static String longestCommonPrefix(String[] strs) {
//扔出特殊的情况,只有一个字符串的时候,该字符串就是最长公共前缀
if(strs.length==1){
return strs[0];
}
//公共前缀比所有字符串都短,随便选一个先
String s=strs[0];
for (String string : strs) {
while(!string.startsWith(s)){
if(s.length()==0)return "";
//公共前缀不匹配就让它变短!
s=s.substring(0,s.length()-1);
}
}
return s;
}