【LeetCode】【Java】14. 最长公共前缀——编写一个函数来查找字符串数组中的最长公共前缀 如果不存在公共前缀 返回空字符串

14. 最长公共前缀

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

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

示例 1:

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

示例 2:

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

说明:

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

因为找的是数组的最长公共前缀,所以我们可以对这个数组进行一个排序处理==Arrays.sort(strs);==这样的话我们就可以得到一个排序后的结果,

排序前:
[flight, flow, flower]   

["dog","racecar","car"]

排序后:
[flight, flow, flower]


[car, dog, racecar]//因为只有顺序相同的单词首字母才有公共前缀

因为是通过单词字母顺序来排列的,所以我们只需要将数组里面的第一个元素,和最后一个元素来比较,即可以确定最长的功能前缀,因为只有顺序相同的单词首字母才有公共前缀,中间不会夹着其他首字母

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs==null|| strs.length==0)return "";
            Arrays.sort(strs);
            StringBuilder stringBuilder = new StringBuilder();
            // 取最小的单词长度进行遍历,公共部分也只能是在这部分产生
            int k =Math.min(strs[0].length(), strs[strs.length - 1].length());
            for (int i = 0; i < k; i++) {
                if (strs[0].charAt(i) == strs[strs.length - 1].charAt(i)) {
                // 拼接公共前缀
                   stringBuilder.append(strs[0].charAt(i));
                }else {
                    break;
                }
            }
            return stringBuilder.toString();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_41367523/article/details/106568522