算法题---最长公共前缀
题目来源:https://leetcode-cn.com/problems/longest-common-prefix/
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
解答:
package com.zx.leetcode.longestcommonprefix; /** * @Author JAY * @Date 2019/6/29 13:30 * @Description 最长公共前缀 **/ public class SolutionV2 { public static void main(String[] args) { // String[] str = {"dog","dracecar","dcar"}; // String[] str = {"flower","flow","flight"}; String[] str = {"flow","flow2","flow3","flight"}; // String[] str = {"1flow","2flow","flow"}; System.out.println(longestCommonPrefix(str)); } public static String longestCommonPrefix(String[] strs) { if (strs.length == 0){ return ""; } String s = strs[0]; for (int i = 1; i < strs.length; i++) { while (strs[i].indexOf(s) != 0){ s = s.substring(0,s.length() - 1); if (s.isEmpty()){ return ""; } } } return s; } }
解答二:
package com.zx.leetcode.longestcommonprefix; /** * @Author JAY * @Date 2019/6/29 13:30 * @Description 最长公共前缀 **/ public class Solution { public static void main(String[] args) { // String[] str = {"dog","dracecar","dcar"}; // String[] str = {"flower","flow","flight"}; // String[] str = {"flow","flow","flow"}; String[] str = {"1flow","2flow","flow"}; System.out.println(longestCommonPrefix(str)); } public static String longestCommonPrefix(String[] strs) { if(strs == null || strs.length == 0){ return ""; } boolean begin = true; StringBuilder sb = new StringBuilder(); int i = 0; int length = strs.length; String first = strs[0]; while (begin){ try { String substring = first.substring(i, i + 1); for (int index = 1; index < length; index++){ if (!substring.equals(strs[index].substring(i,i+1))){ begin = false; break; } } if (begin){ sb = sb.append(substring); } if (first.equals(sb.toString())){ //说明已经全部匹配到了,推出循环 begin = false; } i++; }catch (Exception e){ begin = false; } } return sb.length() == 0 ? "" : sb.toString(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?