Leetcode第十四题 最长公共前缀 难度:简单
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明: 所有输入只包含小写字母 a-z 。
1.我的解法
思路:首先传入的字符串数组有三种情况:
第一种:传入的是个空数组,那么返回””
第二种:传入的数组只有一个元素,那么返回它本身
第三种:正常传入多个元素。以第一个元素为基准,依次遍历字符去和后面的元素对应的字符去比较。
如果各个元素对应位置的字符都相同,那么就将该字符放进StringBuffer中。
如果遇到不一样的或者异常的情况,就退出比较。返回结果。
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length==0){
return "";
}
if (strs.length==1){
return strs[0];
}
StringBuffer resultSb = new StringBuffer();
a:for (int j=0;j<strs[0].toCharArray().length;j++){
char flag = strs[0].toCharArray()[j];
for (int i=1;i<strs.length;i++){
try{
if (flag==strs[i].toCharArray()[j]){
if (i==strs.length-1){
resultSb.append(flag);
}
}else{
break a;
}
}catch (Exception e){
break a;
}
}
}
return resultSb.toString();
}
}
2.官方解法
官方题解中用到了String.charAt(int)方法。这个方法是我没有想到的。用到这个方法就可以省去将字符串转换为字符数组的过程,既节约时间,也节约了空间。
//String.charAt(int) 返回在index索引处的字符。
public char charAt(int index)