最长公共前缀 | Java刷题打卡

本文正在参加「Java主题月 – Java 刷题打卡」,详情查看 活动链接

文章首发于公众号 “蘑菇睡不着”

一、题目描述

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

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

输入:strs = ["flower","flow","flight"]
输出:"fl"
复制代码

示例 1:

输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
复制代码

提示:

  • 0 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

二、思路分析:

  这道题还是比较简单的,但有一点最长公共前缀,一定是连续的,这个不能记混。这道题只要进行遍历,先比较前两个,得到最长前缀,然后拿这个最长前缀一次和之后的字符串比较,每次选最长的前缀即可。

三、AC代码

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs == null || strs.length < 1) {
            return "";
        }
        // 最长前缀
        String prefix = strs[0];
        // 遍历字符串数组
        for (int i = 1; i < strs.length; i ++) {
        // 每次取 prefix 与 下一个字符串的最长前缀,并赋值给 prefix
            prefix = getCommonPrefix(prefix, strs[i]);
            if (prefix == "" || prefix.length() < 1) {
                // 不管是与那个字符串匹配不到最长前缀都直接返回
                break;
            }
        }
        return prefix;
    }
    // 找两个字符串最长前缀的方法
    private String getCommonPrefix(String a, String b) {
        int length = Math.min(a.length(), b.length());
        int index = 0;
        while (index < length && a.charAt(index) == b.charAt(index)) {
            index ++;
        }
        return a.substring(0, index);
    }
}
复制代码

四、总结

  这道题主要是对字符串数组进行遍历,然后一个一个匹配最长前缀就可以。

点个赞再走呗~

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享