题目链接

题目描述

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

说明:

所有输入只包含小写字母 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)$。

手记

遍历即可,注意特殊值的影响,提前排除特殊情况即可。

最新文章

  1. mysql学习(3)-linux下mysql主从复制
  2. 转:最简单的基于 DirectShow 的视频播放器
  3. Nginx 笔记与总结(1)编译安装
  4. JSON 序列化和反序列化&mdash;&mdash;JavaScriptSerializer实现
  5. Linux进程控制(三)
  6. ANDROID_MARS学习笔记_S01原始版_011_XML
  7. 八、频繁模式挖掘Frequent Pattern Mining
  8. 201521123101 《Java程序设计》第8周学习总结
  9. springboot集合jpa使用
  10. 软件工程实践-WC项目之C实现
  11. shiro多Realm第一次调用不生效问题
  12. react组件之间的通信
  13. SQL分组求每组最大值问题的解决方法收集 (转载)
  14. Android View转为图片保存为本地文件,异步监听回调操作结果;
  15. HackerRank beautiful string
  16. POJ 1488 - TEX Quotes
  17. JavaScript Cookies取值
  18. 《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了
  19. Warning: Divide by zero.
  20. 面向对象程序设计_Task5_Calculator1.5.0

热门文章

  1. 自定义工具&#39;MSDiscocodeGenerator’失败。未能检索当前项目。
  2. 1-4SpringBoot操作之Spring-Data-Jpa(一)
  3. arm linux 移植 x265
  4. python中软件开发规范,模块,序列化随笔
  5. bzoj 4754: [Jsoi2016]独特的树叶
  6. Metasploit学习笔记——环境配置
  7. Vue+Axios+Nigix+SpringCloud前端和后端搭建及其碰到的问题
  8. NO3 cat-xargs-cp-mv-rm-find命令
  9. Python 编写代码 检查是否遵循PEP 8标准
  10. js数据类型 判断