问题
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:“”
解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
答案
class Solution {
public String longestCommonPrefix(String[] strs) {
String preString = "";
if(!(strs.length > 0)){
return preString;
}
int minLength = strs[0].length();
int minIndex = 0;
// 求出最小的字符串长度
for (int i = 1; i < strs.length; i++) {
int length = strs[i].length();
if (length < minLength) {
minLength = length;
minIndex = i;
}
}
// 最小字符串长度是最大的前缀
String maxpre= strs[minIndex];
for (int i = 0; i < strs.length; i++) {
// 截取最短字符串知道满足符合前缀 进行下一个比较
while(!strs[i].startsWith(maxpre)){
maxpre = maxpre.substring(0,maxpre.length() - 1);
}
}
if(maxpre.length()>0){
preString = maxpre;
}
System.out.println( preString);
return preString;
}
}
思路
- 先求出数组中最短的字符串,
- 循环字符串数组,判断最短字符串是否是前缀.如果不是则截取字段字符串.知道符合.