JAVA练习371- 最长公共前缀
题目概览编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀返回空字符串。示例 1输入strs [flower,flow,flight] 输出fl示例 2输入strs [dog,racecar,car] 输出 解释输入不存在公共前缀。提示1 strs.length 2000 strs[i].length 200strs[i]如果非空则仅由小写英文字母组成来源14. 最长公共前缀 - 力扣LeetCode解题分析方法一纵向遍历纵向遍历是最直观的解法。从每个字符串的第一个字符开始依次比较同一列上的字符是否相同。算法步骤以第一个字符串strs[0]为基准遍历其每个字符索引j。对于每个索引j遍历数组中其余字符串strs[1]到strs[n-1]。如果遇到以下情况之一则停止遍历并返回结果当前字符串strs[i]的长度小于等于j即该字符串已到末尾。当前字符串在索引j处的字符与基准字符串strs[0]在索引j处的字符不同。如果遍历完基准字符串的所有字符都未遇到不匹配则整个基准字符串就是最长公共前缀。复杂度分析时间复杂度O(m×n)其中 m 是字符串的平均长度n 是字符串数组的长度。最坏情况下需要比较所有字符。空间复杂度O(1)只使用了常数级别的额外空间。class Solution { public String longestCommonPrefix(String[] strs) { if (strs null || strs.length 0) { return ; } // 以第一个字符串为基准 for (int j 0; j strs[0].length(); j) { char c strs[0].charAt(j); // 遍历其余字符串 for (int i 1; i strs.length; i) { // 如果当前字符串长度不足或字符不匹配 if (j strs[i].length() || strs[i].charAt(j) ! c) { return strs[0].substring(0, j); } } } // 第一个字符串本身就是最长公共前缀 return strs[0]; } }方法二横向扫描横向扫描是另一种常见思路依次将每个字符串与当前得到的前缀进行比较并更新前缀。算法步骤将第一个字符串strs[0]作为初始前缀prefix。遍历数组中的每个字符串strs[i]从第二个开始比较prefix与strs[i]找出它们的最长公共前缀。将prefix更新为这个新的前缀。如果prefix变为空字符串则提前返回。遍历结束后prefix即为最长公共前缀。复杂度分析时间复杂度O(m×n)其中 m 是字符串的平均长度n 是字符串数组的长度。空间复杂度O(m)需要存储当前前缀。class Solution { public String longestCommonPrefix(String[] strs) { if (strs null || strs.length 0) { return ; } String prefix strs[0]; for (int i 1; i strs.length; i) { // 找出 prefix 与当前字符串的公共前缀 while (strs[i].indexOf(prefix) ! 0) { prefix prefix.substring(0, prefix.length() - 1); if (prefix.isEmpty()) { return ; } } } return prefix; } }方法三分治法将问题分解为子问题数组的最长公共前缀 左半部分的最长公共前缀 与 右半部分的最长公共前缀 的公共前缀。算法步骤将字符串数组分成左右两半。递归求出左半部分的最长公共前缀leftPrefix。递归求出右半部分的最长公共前缀rightPrefix。返回leftPrefix和rightPrefix的公共前缀。递归的基准情况当区间只有一个字符串时直接返回该字符串。复杂度分析时间复杂度O(m×n)与纵向遍历相同但递归调用会带来额外的开销。空间复杂度O(m×log n)递归深度为 log n每层需要存储中间结果。class Solution { public String longestCommonPrefix(String[] strs) { if (strs null || strs.length 0) { return ; } return divide(strs, 0, strs.length - 1); } private String divide(String[] strs, int left, int right) { if (left right) { return strs[left]; } int mid left (right - left) / 2; String leftPrefix divide(strs, left, mid); String rightPrefix divide(strs, mid 1, right); return commonPrefix(leftPrefix, rightPrefix); } private String commonPrefix(String str1, String str2) { int minLen Math.min(str1.length(), str2.length()); for (int i 0; i minLen; i) { if (str1.charAt(i) ! str2.charAt(i)) { return str1.substring(0, i); } } return str1.substring(0, minLen); } }方法对比与总结方法思路时间复杂度空间复杂度适用场景纵向遍历逐列比较字符O(m×n)O(1)最直观代码简洁内存占用少横向扫描依次与前缀比较并更新O(m×n)O(m)易于理解适合字符串长度差异大的情况分治法递归分解问题O(m×n)O(m×log n)适合并行计算或作为算法练习推荐在实际面试或编程中纵向遍历是最常用且高效的解法代码简洁空间复杂度最优。边界情况处理输入数组为空或为null直接返回空字符串。数组中包含空字符串公共前缀必然为空。所有字符串完全相同返回任意一个字符串。

相关新闻

JAVA练习370- 最后一个单词的长度

JAVA练习370- 最后一个单词的长度

题目概览 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s "Hello World" 输出&am…

2026/7/30 19:10:29阅读更多 →
流域水电智慧调度:基于土星云SE110S系列的“站-域-云”边缘实践

流域水电智慧调度:基于土星云SE110S系列的“站-域-云”边缘实践

本文导读流域梯级调度三大核心痛点:站点分散、数据滞后、协同低效四级边云协同架构与偏远场站硬件选型思路水文预测、梯级调度、调峰响应的边缘落地实现流域调度项目应用成效与实践经验做流域水电调度的朋友都有体会:梯级电站横跨几百公里,偏…

2026/7/30 19:10:29阅读更多 →
Baserow完整指南:如何用开源无代码平台彻底改变你的数据管理方式

Baserow完整指南:如何用开源无代码平台彻底改变你的数据管理方式

Baserow完整指南:如何用开源无代码平台彻底改变你的数据管理方式 【免费下载链接】baserow Build databases, automations, apps & agents with AI — no code. Open source platform available on cloud and self-hosted. GDPR, HIPAA, SOC 2 compliant. Best …

2026/7/30 19:08:29阅读更多 →
OpenClaw TTS声学模型训练实战指南

OpenClaw TTS声学模型训练实战指南

1. 项目概述:OpenClaw TTS声学模型实战OpenClaw TTS作为新一代开源语音合成框架,其声学模型训练效果直接决定了最终语音输出的自然度和表现力。在实际项目中,训练数据的准备与配置环节往往占据整个流程70%以上的工作量,却鲜有系统…

2026/7/30 20:22:57阅读更多 →
AI视频生成工具应该怎么选择,国内外10个AI视频生成工具对比

AI视频生成工具应该怎么选择,国内外10个AI视频生成工具对比

过去制作一个视频,意味着需要摄影设备、剪辑软件、专业人员以及大量时间。但现在,只需要输入一句文字:“一个穿越未来城市的机器人,在雨夜街头行走。”几分钟后,AI就可以生成一段具有电影感的视频。AI视频生成正在快速…

2026/7/30 20:22:57阅读更多 →
模块化动漫素描教学:从基础到商业应用的全流程设计

模块化动漫素描教学:从基础到商业应用的全流程设计

1. 项目概述:当模块化教学遇上动漫素描十年前我刚接触动漫设计教学时,最头疼的就是学生对着石膏像画完一学期素描后,面对角色设计作业依然手足无措。直到在东京某工作室交流时,看到他们用《进击的巨人》角色拆解教学,才…

2026/7/30 20:22:57阅读更多 →
Ubuntu与Windows网线直连:静态IP配置与网络调试全指南

Ubuntu与Windows网线直连:静态IP配置与网络调试全指南

1. 场景引入:为什么需要一根网线直连?在服务器运维、嵌入式开发或者临时搭建测试环境时,我们经常会遇到一个看似简单却让人头疼的场景:一台没有显示器的Ubuntu服务器,和一台手边的Windows笔记本电脑,如何快…

2026/7/30 20:22:57阅读更多 →
【单片机课设毕设项目】基于单片机的心率血氧超限声光报警系统设计 基于嵌入式开发的人体健康监测终端设计与实现(013201)

【单片机课设毕设项目】基于单片机的心率血氧超限声光报警系统设计 基于嵌入式开发的人体健康监测终端设计与实现(013201)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/7/30 20:22:57阅读更多 →
Helion分布式训练支持:多GPU/TPU环境下的高效内核开发

Helion分布式训练支持:多GPU/TPU环境下的高效内核开发

Helion分布式训练支持:多GPU/TPU环境下的高效内核开发 【免费下载链接】helion A Python-embedded DSL that makes it easy to write fast, scalable ML kernels with minimal boilerplate. 项目地址: https://gitcode.com/gh_mirrors/hel/helion Helion是一…

2026/7/30 20:20:57阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/30 15:03:16阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/30 12:22:27阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/30 15:13:02阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/30 15:43:46阅读更多 →