leetcode14-最长公共前缀

原题

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

示例 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/