LeetCode 14:最长公共前缀
(博主也是个小白哦,希望能帮助到你!)
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
解法一:横向扫描
public String longestCommonPrefix(String[] strs) {
String ans=strs[0];//先取第一个和以后的每个字符串进行比较
for(int i=1;i<strs.length;i++) {//遍历所有
for(int j=0;j<strs[i].length()&&j<ans.length();j++) {//j<ans.length()也要加上,防止数组越界
if(ans.charAt(j)!=strs[i].charAt(j)){//如果这两个比较的字符串有一个不一样了,break!并及时更新ans.
ans=ans.substring(0,j);
break;
}
if(ans.equals(""))//如果字符串数组中,有一个字符串是空,直接返回,无需浪费时间。
return ans;
}
}
return ans;
}
解法二:纵向扫描(与第一种思想相同,只不过横向扫描的外层循环是遍历是字符串数组,纵向扫描外层循环的是其中一个字符串)
可以先跑出最短的字符串哦~
public static String longestCommonPrefix(String[] strs) {
String ans=strs[0];//目标字符串
for(int i=0;i<ans.length();i++) {//遍历目标字符串
for(int j=1;j<strs.length&&i<strs[j].length();j++) {//遍历字符串数组,并且i<strs.length()条件防止越界
if(ans.charAt(i)!=strs[j].charAt(i)) {//如果不等于,直接返回!
return ans.substring(0,i);
}
}
}
return ans;
}如有问题请留言或者加我的qq奥 1678912421~