原题
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,”flow”,”flight”] 输出: “fl”
示例 2:
输入: [“dog”,”racecar”,”car”] 输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
解法
思想
以第一个字符串的每一个位置上的字符为基准,依次比对其余字符串对应位置上的字符,如果每个字符串对应的位置上都是这个字符,则将其append到结果上,一旦遇到一个字符不是公有的立刻将结果返回。
代码
class Solution {
public String longestCommonPrefix(String[] strs) {
int size = strs.length;
if(size==0) return "";
if(size==1) return strs[0];//一个字符串直接返回本身
StringBuilder str = new StringBuilder();//为了避免java连接字符串的低效率使用StringBuilder
for(int i = 0;i < strs[0].length();i++){
char letter = strs[0].charAt(i);
for(int j = 1;j < size;j++){
//依次检查其余字符串各个字符是否对应第一个字符串中的字符
//为了避免其他字符串的长度小于第一个字符串,使用try捕获异常
try{
if(strs[j].charAt(i)!=letter) return str.toString();
}catch(Exception e){ return str.toString();}
}
str.append(letter);
}
return str.toString();
}
}
原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/leetcode14-%e6%9c%80%e9%95%bf%e5%85%ac%e5%85%b1%e5%89%8d%e7%bc%80/