欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

14. 最长公共前缀

程序员文章站 2022-03-11 12:52:39
...

最长公共前缀

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

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

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:
所有输入只包含小写字母 a-z 。

代码+注释+思路:

class Solution {
    public String longestCommonPrefix(String[] strs) {
        /**
         * 遍历所有字符串,都从第一个字符开始验证,如果相同继续往后验证,不同直接跳出
         *
         */
        //如果数组为null或者数组中没有元素,直接返回""
        if (strs==null || strs.length==0)
        {
            return "";
        }
        //数组长度为1,直接返回唯一字符串
        if (strs.length==1)
        {
            return strs[0];
        }
        int midLen=strs[0].length();
        //前缀字符串的最后一个字符的索引
        int result=0;
        //当有不相同的字符时,设置为true
        boolean notEqual=false;
        //找到最短字符串的长度,这样就知道最多需要比较多少个字符
        for (String str:strs
             ) {
            int len=str.length();
            if (midLen>len)
            {
                midLen=len;
            }
        }
        for (int i = 0; i < midLen; i++) {
            char firstChar=strs[0].charAt(i);
            for (int j = 1; j < strs.length; j++) {
                if (firstChar!=strs[j].charAt(i))
                {
                    notEqual=true;
                    break;
                }
            }
            //当notEqual为true时证明已经有不同的字符了,直接跳出循环
            if (notEqual)
            {
                break;
            }
            result++;
        }
        if (result>0) {
            return strs[0].substring(0, result);
        }else {
            return "";
        }
    }
}
相关标签: 最长公共前缀