编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
思路:
要求最长的公共前缀,就是求字符串数组所有字符串前面相同的部分。
创建一个新函数来比较两个字符串前面相同的长度。
通过比较字符串0和剩余字符串的公共前缀,选出最小的长度即为最长公共前缀。
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length==0)return "";
if (strs.length==1)return strs[0];
int sameCharNum=0;
Set<Integer> set=new HashSet<>();
for (int i = 1; i < strs.length; i++) {
sameCharNum = longestNum(strs[0], strs[i]);
set.add(sameCharNum);
}
int minNum=Integer.MAX_VALUE;
for (int i:set){
if(minNum>i){
minNum=i;
}
}
return strs[0].substring(0,minNum);
} public int longestNum(String s1,String s2){
int sameCharNum=0;
for (int i = 0; i<s1.length()&&i<s2.length(); i++) {
if (s1.charAt(i)==s2.charAt(i)) {
sameCharNum++;
}else
return sameCharNum;
}
return sameCharNum;
}
}