Java算法练习——最长公共前缀
2024-09-03 09:21:18
题目链接
题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
说明:
所有输入只包含小写字母 a-z 。
示例 1
输入: ["flower","flow","flight"]
输出: "fl"
示例 2
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
题解
public String longestCommonPrefix(String[] strs) {
if (strs.length < 1) {
return ""; // 数组长度小于1,直接返回默认值
}
StringBuilder stringBuilder = new StringBuilder();
int minLength = Integer.MAX_VALUE;
for (String str : strs) {
if (str.length() == 0) {
return ""; // 其中一个字符串长度为0,直接返回默认值
}
if (str.length() < minLength) {
minLength = str.length();
}
}
for (int i = 0; i < minLength; i++) {
char prefix = strs[0].charAt(i);
boolean flag = true;
for (String str : strs) {
if (str.charAt(i) != prefix) {
flag = false;
}
}
if (flag) {
stringBuilder.append(prefix);
} else {
break;
}
}
if (stringBuilder.toString().length() > 0) {
return stringBuilder.toString();
} else {
return "";
}
}
复杂度分析
- 时间复杂度:$O(n^2)$。
- 空间复杂度:$O(1)$。
手记
遍历即可,注意特殊值的影响,提前排除特殊情况即可。
最新文章
- mysql学习(3)-linux下mysql主从复制
- 转:最简单的基于 DirectShow 的视频播放器
- Nginx 笔记与总结(1)编译安装
- JSON 序列化和反序列化&mdash;&mdash;JavaScriptSerializer实现
- Linux进程控制(三)
- ANDROID_MARS学习笔记_S01原始版_011_XML
- 八、频繁模式挖掘Frequent Pattern Mining
- 201521123101 《Java程序设计》第8周学习总结
- springboot集合jpa使用
- 软件工程实践-WC项目之C实现
- shiro多Realm第一次调用不生效问题
- react组件之间的通信
- SQL分组求每组最大值问题的解决方法收集 (转载)
- Android View转为图片保存为本地文件,异步监听回调操作结果;
- HackerRank beautiful string
- POJ 1488 - TEX Quotes
- JavaScript Cookies取值
- 《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了
- Warning: Divide by zero.
- 面向对象程序设计_Task5_Calculator1.5.0
热门文章
- 自定义工具&#39;MSDiscocodeGenerator’失败。未能检索当前项目。
- 1-4SpringBoot操作之Spring-Data-Jpa(一)
- arm linux 移植 x265
- python中软件开发规范,模块,序列化随笔
- bzoj 4754: [Jsoi2016]独特的树叶
- Metasploit学习笔记——环境配置
- Vue+Axios+Nigix+SpringCloud前端和后端搭建及其碰到的问题
- NO3 cat-xargs-cp-mv-rm-find命令
- Python 编写代码 检查是否遵循PEP 8标准
- js数据类型 判断