想的多, 见的多 , 就能打开思路了
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
0 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
题解:
简单粗暴的
public String longestCommonPrefix(String[] strs) {
String first = strs[0];
char[] chars = first.toCharArray();
String res = "";
for(int i = 0;i<chars.length;i++){
boolean same = true;
for(int j = 1;j<strs.length;j++){
char[] chs = strs[j].toCharArray();
if(chs.length > i){
if(chars[i] != chs[i]){
same = false;
}
}else{
return res;
}
}
if(same){
res = res + chars[i];
}
}
return res;
}
稍微有点结构的
public String longestCommonPrefix2(String[] strs) {
Set<Character> s = new HashSet<>();
String first = strs[0];
String res = "";
char[] chars = first.toCharArray();
for(int i = 0;i<chars.length;i++){
for(int j = 1;j<strs.length;j++){
char[] chs = strs[j].toCharArray();
if(chs.length > i){
if(j > 1 && !s.add(chs[i])){
return res;
}
}else{
return res;
}
}
res = res + chars[i];
}
return res;
}
高级玩家的
public String longestCommonPrefix3(String[] strs) {
if(strs == null || strs.length == 0) return "";
String str = strs[0];
for(int i = 1 ; i < strs.length ; i++){
while(strs[i].indexOf(str)!=0){
str = str.substring(0,str.length()-1);
}
}
return str;
}
网友评论