n 个字符串的最长公共前缀

2023-11-26

给定 n 个最大长度为 m 的字符串。我们如何找到其中至少两个字符串共享的最长公共前缀?

示例:['花'、'流'、'你好'、'舰队']

答案:fl

我正在考虑为所有字符串构建一个 Trie,然后检查分支到两个/更多子字符串(满足通用性)的最深节点(满足最长)。这需要 O(n*m) 时间和空间。有一个更好的方法吗


为什么要使用 trie(需要 O(mn) 时间和 O(mn) 空间,只需使用基本的暴力方式。第一个循环,找到最短的字符串作为 minStr,需要 o(n) 时间,第二个循环,比较一个与此 minStr 减一,并保留一个指示 minStr 最右边索引的变量,此循环需要 O(mn) 其中 m 是所有字符串的最短长度。代码如下,

public String longestCommonPrefix(String[] strs) {
    if(strs.length==0) return "";
    String minStr=strs[0];

    for(int i=1;i<strs.length;i++){
        if(strs[i].length()<minStr.length())
            minStr=strs[i];
    }
    int end=minStr.length();
    for(int i=0;i<strs.length;i++){
        int j;
        for( j=0;j<end;j++){
            if(minStr.charAt(j)!=strs[i].charAt(j))
                break;
        }
        if(j<end)
            end=j;
    }
    return minStr.substring(0,end);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

n 个字符串的最长公共前缀 的相关文章

  • 协作投票算法的用户分布

    我的应用程序 实际上是一个游戏 的用户回答问题即可获得积分 问题由其他用户提供 由于数量有限 我无法亲自检查所有内容 因此我决定将过滤过程众包给用户 玩家 规则很简单 每个用户都会看到一个问题来评价好 坏 不确定 当问题被评为 差 5 次时
  • Python 中聚类相似字符串的算法?

    我正在编写一个脚本 该脚本当前包含多个 DNA 序列列表 每个列表都有不同数量的 DNA 序列 并且我需要根据汉明距离相似性对每个列表中的序列进行聚类 我当前的实现 目前非常粗糙 提取列表中的第一个序列并计算每个后续序列的汉明距离 如果它在
  • O(log n) 总是比 O(n) 快吗

    如果有 2 种算法以不同的复杂度计算相同的结果 O log n 总是会更快吗 如果是这样请解释一下 顺便说一句 这不是作业问题 不会 如果一种算法运行在N 100另一个在 log N 100 那么对于较小的输入大小 第二个将会较慢 渐近复杂
  • 计算排列中“反转”的数量

    设 A 为一个大小的数组N 我们称之为几个索引 i j 一个 逆 如果i lt j and A i gt A j 我需要找到一种接收大小数组的算法N 具有唯一的数字 并返回时间的倒数数O n log n 您可以使用归并排序 http en
  • Java 服务器和浏览器客户端之间乐观对象复制的解决方案?

    我正在构建一个系统 多个用户需要同时创建 查看和修改一组对象 该系统计划在 Java 服务器和现代浏览器客户端上运行 我可以选择哪些 它需要在网络和服务器中断时具有鲁棒性 用户界面不得阻止修改 修改需要存储在本地并在连接恢复时发布 在正常操
  • 拓扑排序卡恩算法 BFS 或 DFS

    拓扑排序的方法是BFS还是DFS 哪个正确 我认为BFS是对的 但有些网站说DFS 有些网站说BFS 我很困惑 卡恩算法与 BFS 或 DFS 相同吗 或者BFS 或DFS 只是卡恩算法的工具 Kahn算法和DFS在实践中都用于拓扑排序 选
  • 将曲线图案与图像边缘匹配

    我有一个要搜索沿其边缘的曲线的目标图像和一个包含该曲线的模板图像 我需要实现的是在目标图像中找到模板图像中的曲线的最佳匹配 并根据分数来判断是否匹配 这还包括曲线的旋转和大小调整 目标图像可以是 Canny Edge 检测器的输出 如果这能
  • 计算序列 1,3,8,22,60,164,448,1224... 的第 n 项? [复制]

    这个问题在这里已经有答案了 可能的重复 我想以 Order 1 或 nlogn 的顺序生成序列 1 3 8 22 60 164 的第 n 项 https stackoverflow com questions 11301992 i want
  • STL 哈希函数

    STL 是否有公开公开的可用哈希函数 我知道有一些使用哈希值的非标准实现 例如boost hash map 并且MSVC8实现了hash map hash set 等的版本 但有没有哈希函数C 98 STL 中定义的 如果不是 可靠哈希函数
  • 如何决定权重?

    对于我的工作 我需要某种具有以下输入和输出的算法 输入 一组日期 过去的日期 输出 一组权重 每个给定日期一个权重 所有权重的总和 1 基本思想是 距离今天日期最近的日期应该获得最高的权重 第二个最接近的日期将获得第二高的权重 依此类推 有
  • 拉伸数组

    我有一个形成曲线的样本向量 假设其中有 1000 个点 如果我想将其拉伸到填充 1500 个点 给出不错结果的最简单算法是什么 我正在寻找一些只有几行 C C 的东西 我总是想增加向量的大小 并且新向量可以是当前向量大小的 1 1 倍到 5
  • 如何在范围树中搜索?

    我读了几张幻灯片 像这样one http www cse wustl edu taoju cse546 lectures Lecture21 rangequery 2d pdf最后一页 描述搜索算法 但是 我有一个基本问题 数据位于二维空间
  • 如何从文件中读取 N 随机行而不将文件存储在内存中?

    我熟悉从文件中读取单个随机行而不将整个文件读入内存的算法 http perldoc perl org perlfaq5 html How do I select a random line from a file 3f 我想知道这个技术是否
  • 如何用惰性传播实现线段树?

    我在互联网上搜索了有关线段树的实现的信息 但在惰性传播方面却一无所获 之前有一些关于堆栈溢出的问题 但它们专注于解决 SPOJ 的一些特定问题 虽然我认为这是用伪代码对线段树的最好解释 但我需要用惰性传播来实现它 我发现以下链接 除了上面的
  • 如何获取字母数组的每种可能模式[重复]

    这个问题在这里已经有答案了 可能的重复 有没有更好的方法来进行字符串排列 https stackoverflow com questions 1995328 are there any better methods to do permut
  • 矩阵行列式算法 C++

    我是编程新手 我一直在寻找一种找到矩阵行列式的方法 我在网上找到了这段代码 但我很难理解这里的算法 我对递归的基础没有问题 但继续和主循环我很难理解 非常感谢任何可以向我解释该算法的人 int determ int a MAX MAX in
  • MapReduce 只是另一个编程原理的概括吗?

    我正在研究并行编程 并且正在研究映射缩减和其他分布式算法 最好只学习mapreduce 还是有更通用的算法可以更好地为我服务 这取决于您打算使用算法的目的 映射减少 http labs google com papers mapreduce
  • 绘制一个图,其中顶点之间的距离对应于边权重

    当我给他一个加权图和边权重顶点之间的点到顶点之间的距离 就像是 public ArrayOfCoordinatesForVertices super hyper algorithm weighted graph return foo 这通常
  • 计算哪些字符串将具有相同的哈希值

    使用 SHA 1 是否可以计算出哪些有限字符串将呈现相等的哈希值 您正在寻找的是该问题的解决方案碰撞问题 http en wikipedia org wiki Collision 28computer science 29 也可以看看碰撞攻
  • 检查一个字符串是否是另一个字符串的旋转而不连接

    有 2 个字符串 我们如何检查其中一个是否是另一个的旋转版本 For Example hello lohel 一种简单的解决方案是concatenating第一个字符串与其自身并检查另一个字符串是否是substring的串联版本 还有其他解

随机推荐

  • 行动代表。如何获取调用该方法的实例

    我有一个操作 我想知道如何访问调用该方法的实例 Exemple this FindInstance gt this InstanceOfAClass Method this FindInstance gt this InstanceOfAC
  • RS232串口通信 C# win7 .net Framework 3.5 sp1

    你好 我是 C 串口新手 我写了一个c 程序 运行在winXP和win7上 以在机器发送数据时保留从串口接收到的数据 using System IO using System IO Ports using System Threading
  • 嵌入式Python 2.7.2 从用户定义的目录导入模块

    我将 Python 嵌入到具有定义的 API 的 C C 应用程序中 应用程序需要实例化脚本中定义的类 其结构大致如下 class userscript1 def init self do something here def method
  • 将元组列表转换为字典

    我有一个像这样的元组列表 a 1 a 2 a 3 b 1 b 2 c 1 我想通过第一项迭代此键控 因此 例如 我可以打印如下内容 a 1 2 3 b 1 2 c 1 如果不保留一个项目来跟踪第一个项目是否与我围绕元组循环相同 我该如何去做
  • Gmail 未显示正确的字体

    我正在尝试更改电子邮件的字体以打开 sans 但是 我在 Gmail 呈现正确字体时遇到问题 我设法找到解决 Outlook 问题的方法 这就是我所拥有的 body font face font family Open Sans font
  • vim 中的 Zsh 别名如 !gst?

    有没有办法在 vim 中运行我的 zsh 别名 并将输出发送到新的分割 我正在使用 oh my zsh git 别名 例如gst 而我无法做到 gst在 vim 里面 Thanks Try 设置 shell zsh l 并将别名设置为 zs
  • 将 RTSP 存储到文件位置

    我能够通过 C Winform 应用程序在 Windows 7 64 位机器上流式传输 rtsp 这是我使用的库 VLCD点网这是播放 RTSP 流的代码示例 LocationMedia media new LocationMedia rt
  • ActiveMQ 消费者挂起

    我有一个使用 SSL 传输的 activeMQ 代理 我有大约 10 个消费者正在使用该代理 我正在使用骆驼来配置我的路线 每隔一段时间 它就会挂起并且不会消耗新消息 即使我重新启动消费者 即使队列中有待处理的消息 我开始尝试通过一次一个地
  • Visual Studio 2015。文件未添加到 TFS

    我正在使用 Visual Studio 2015 update 3 以及托管在 Visualstudio com 上的 TFS 当我将 C 类文件添加到 Visual Studio 中的一个项目时 它不会自动添加到源代码管理中 对于同一解决
  • 是什么导致我的 java.net.SocketException: 连接重置? [复制]

    这个问题在这里已经有答案了 我们经常看到但间歇性的java net SocketException Connection reset我们的日志中出现错误 我们不确定在哪里Connection reset错误实际上是从哪里来的 以及如何去调试
  • NSdManager ResolveListener 错误代码 3:失败已处于活动状态

    我在 Android 应用程序中使用 NsdManager 来发现由我开发的另一台设备发布的 NSD 服务 我只在Android App上进行服务发现 这一侧不需要服务注册 网络上同时发布了同一类型服务的多个实例 我开始使用Google提供
  • Hibernate Postgresql select for update 与外连接问题

    我在尝试使用 Spring 数据和 Hibernate 作为 JPA 实现和 Postgresql 选择更新行时遇到了问题 假设我们有实体 A B C public class A Id private Long id OneToMany
  • 链式linq查询的顺序执行

    这段代码有什么不同吗 var query DbContext Customers Where
  • 如何从像素中获取颜色? OpenGL

    我想从游戏中的像素获取颜色并将该颜色保存在变量中 在opengl中如何实现呢 glReadPixels include
  • 如何使用adb shell显示本地图像

    我想用adb shell告诉我的设备显示 SD 卡上的图像 我认为这个命令会起作用 adb shell am start a android intent action MAIN n com android browser BrowserA
  • 在 Javascript 函数中获取 MVC 控制器名称

    我有一个Jquery增删改查功能 这是从多个控制器操作中调用的 有什么方法可以找出哪个控制器正在触发该功能 例如 来自视图的函数调用 a Edit Icon live click function event editDialog this
  • db:seed 未加载模型

    我正在尝试用标准为我的数据库播种db seeds rb方法 这在我的开发机器上运行良好 但在我的服务器上 我得到 sudo rake db seed RAILS ENV production trace Invoke db seed fir
  • Python 的 Tortoise ORM 不返回实体关系(Pyndantic、FastAPI)

    我正在制作一个示例 Fast Api 服务器 使用 Tortoise ORM 作为异步 orm 库 但我似乎无法返回我定义的关系 这些是我的关系 Category from tortoise fields data import Datet
  • 如何创建表达式>;

    是否可以创建Expression
  • n 个字符串的最长公共前缀

    给定 n 个最大长度为 m 的字符串 我们如何找到其中至少两个字符串共享的最长公共前缀 示例 花 流 你好 舰队 答案 fl 我正在考虑为所有字符串构建一个 Trie 然后检查分支到两个 更多子字符串 满足通用性 的最深节点 满足最长 这需