首页 > 编程语言 >【算法】【线性表】最长公共前缀

【算法】【线性表】最长公共前缀

时间:2023-12-12 09:03:41浏览次数:29  
标签:线性表 strs res 算法 substring String length 前缀

1  题目

k个字符串,求出他们的最长公共前缀(LCP)

样例 1:

输入:

k个字符串 = ["ABCD", "ABEF", "ACEF"]

输出:

"A"

解释:公共最长前缀是"A".

样例 2:

输入:

k个字符串 = ["ABCDEFG", "ABCEFG", "ABCEFA"]

输出:

"ABC"

解释:公共最长前缀是"ABC".

2  解答

public class Solution {
    /**
     * @param strs: A list of strings
     * @return: The longest common prefix
     */
    public String longestCommonPrefix(String[] strs) {
        // write your code here
        // 1、数组为空或者长度为0 直接返回
        if (strs == null || strs.length == 0) {
            return "";
        }
        Set<String> strSets = new HashSet<>(strs.length);
        // 先把第一个元素拆开放里边
        String one = strs[0];
        String res =  one;
        for (int i = 0; i < one.length(); i++) {
            strSets.add(one.substring(0, one.length()-i));
        }
        // 从第二个开始遍历,判断每个的子序列是否存在
        for (int i = 1; i < strs.length; i++) {
            String str = strs[i];
            int j = str.length();
            String substring = "";
            // 长度从大到小看每个子序列是否存在
            while (j >= 0) {
                substring = str.substring(0, j);
                // 存在就跳出循环
                if (strSets.contains(substring)) {
                    break;
                }
                j--;
            }
            // 如果长度比当前小,返回结果则指向当前结果
            if (substring.length() < res.length()) {
                res = substring;
            }
        }
        return res;
    }
}

加油。

标签:线性表,strs,res,算法,substring,String,length,前缀
From: https://www.cnblogs.com/kukuxjx/p/17895974.html

相关文章

  • 【算法】【线性表】最长连续序列
    1 题目给定一个未排序的整数数组num,找出最长连续序列的长度。样例1:输入:num=[100,4,200,1,3,2]输出:4解释:这个最长的连续序列是[1,2,3,4].返回所求长度42 解答publicclassSolution{/***@paramnum:Alistofintegers*@......
  • mbedTLS移植CTR_DRBG随机数算法
    一、概述因使用真随机数需要硬件支持,在硬件不支持时,我们需要通过软件来实现伪随机数生成器。根据NITSSP800-90A的推荐,推荐的随机数生成为HASH_DRBG、HMAC_DRBG、CTR_DRBG。本文主要介绍如何通过mbedtls移植实现CTR_DRBG生成随机数。二、mbedtls简要介绍MbedTLS是一个开源、......
  • 算法:如何实现大整数相加?
    算法题:给你两个很大很大的整数(如100位整数),如何求出它们的和?思路:小学数学竖式拆分,各个击破。在程序中列出的“竖式”究竟是什么样子呢?我们以426709752318+ 95481253129为例,来看看大整数相加的详细步骤:第一步,把整数倒序存储,整数的个位存于数组0下标位置,最高位存于数组长度-1下......
  • [持续更新][数据结构][算法]涵盖线性表、栈、链表、队列、图、动态规划、分治递归、回
    备考考点整理内部排序表格树的主要考点二叉树的常考紧紧抓住\(n_0=n_2+1\)\(n=n_0+n_1+n_2...n_m\)\(n=n_1+2*n_2+3*n_3...m*n_m\)+1哈夫曼树没有度为1的结点,也就是\(n_1=0\)完全二叉树常考总结最大岛屿问题(dfs模板)#include<iostream>#include<algorith......
  • 【APP小程序】微信小程序包解密+加解密算法JS逆向
    简介现如今大部分微信小程序抓包看到的数据均是加密的,无法通过常规的业务抓包进行测试,现通过对微信小程序包进行解密,获取到微信小程序源码对加解密算法进行分析。微信小程序解密小程序包默认路径:C:\Users\Administrator\Documents\WeChatFiles\Applet如不知道哪个是需要测试......
  • 在自动化测试时,Python常用的几个加密算法,你有用到吗
    本文分享自华为云社区《『加密算法』|自动化测试时基于Python常用的几个加密算法实现,你有用到吗?》,作者:虫无涯。写在前边这几天做自动化测试,遇到一个问题,那就是接口的请求的密码是加密的;产品的要求是不能使用其他特殊手段,他给提供加密算法,需要在接口请求的时候,使用加密算法处......
  • 算法--哈希表
    哈希表利用空间换时间当我们要快速判断一个元素是否出现在集合里的时候,就需要考虑哈希表。哈希表一般会选择三种数据结构,分别是:数组、set(集合)、map(映射)。数组就是简单的哈希表,但是其大小不能无限开辟优先使用unordered_set(因为其查找和增删效率最优);若需要集合有序,则用set;若不......
  • 车辆检测计数算法
    车辆检测计数算法是一个经典的算法,可以使用目标跟踪+目标识别的方案来解决。但是经过几天的调研后,我发现了一种简单的解决方案。https://blog.csdn.net/taifyang/article/details/128264192 只需要前后两帧做一个最短路径匹配,然后利用直线与检测点是否相交,进行车辆计数。这......
  • Unity3D 游戏开发中的随机算法详解
    在Unity3D游戏开发中,随机算法是非常重要的一部分。随机算法可以用于生成随机数、随机位置、随机事件等,为游戏增加了一定的变化性和可玩性。本文将详细介绍Unity3D中常用的随机算法,并给出相应的技术详解和代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基......
  • 【算法】【线性表】两个排序数组的中位数
    1 题目两个排序的数组A和B分别含有m和n个数,找到两个排序数组的中位数,要求时间复杂度应为O(log(m+n))。中位数的定义:这里的中位数等同于数学定义里的中位数。中位数是排序后数组的中间值。如果有数组中有n个数且n是奇数,则中位数为 A((n-1)/2)。如果有数组中有n个数且n......