【算法】【线性表】【数组】最长公共前缀
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; } }
加油。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了