题目:

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

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

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。

分析:

  1.数组中放的是字符串,每个字符串也有自己的长度

  2.需要找到数组中最短的字符串,因为其他字符超了的不可能和这个字符再有交集

  3.定1,让后面的字符和第一个字符的每一个元素比较,相同的返回。

代码如下:

class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length == 0){
return "";
}
if(strs.length == 1){
return strs[0];
}
int len = strs[0].length();
for(String str:strs){
len = Math.min(len,str.length()); //得到字符数组里面最短字符的长度
}
if(len == 0){ //其中的一个字符为空的情况
return " ";
}
StringBuffer res = new StringBuffer(len);
//每个字符只需要遍历到最小长度即可,因为大于最小长度字符的那一部分不可能有公共
for(int j = 0; j < len;j++){
for(int t= 0;t < strs.length;t++){
if(strs[t].charAt(j) != strs[0].charAt(j)){ //每个与第一个字符开始比较,也就是与下标为0的字符的元素比较。
return res.toString();
}
}
res.append(strs[0].charAt(j)); //相同就加进结果集
}
return res.toString();
}
}

我在LeetCode看到一种解法,时间复杂度看着很小,因为它利用了Java特有的函数。但是函数内部的时间复杂度就不明而已了。这个代码也是比较简洁的。我们来看看:

代码如下:

class Solution {
public String longestCommonPrefix(String[] strs) {
String ret = ""; if(strs.length == 0) return ret;
if(strs.length == 1) return strs[0]; ret = strs[0]; for(int i = 1; i < strs.length; i++){
while (!strs[i].startsWith(ret)){ //判断与第一个元素的相同字符
ret = ret.substring(0, ret.length()-1);
if (ret.length() == 0){
return "";
}
}
}
return ret;
}
}

最长公共前缀(java实现)的更多相关文章

  1. 最长公共前缀(Java)

    编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入:strs = ["flower","flo ...

  2. LeetCode--014--最长公共前缀(java)

    编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow" ...

  3. leetcode.字符串.14最长公共前缀-Java

    1. 具体题目 编写一个函数来查找字符串数组中的最长公共前缀.如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","fl ...

  4. Java算法练习——最长公共前缀

    题目链接 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 说明: 所有输入只包含小写字母 a-z . 示例 1 输入: [&qu ...

  5. Java实现 LeetCode 14 最长公共前缀

    14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower",&quo ...

  6. [LeetCode]14.最长公共前缀(Java)

    原题地址: longest-common-prefix 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入:st ...

  7. lintcode :最长公共前缀

    题目 最长公共前缀 给k个字符串,求出他们的最长公共前缀(LCP) 样例 在 "ABCD" "ABEF" 和 "ACEF" 中,  LCP ...

  8. [LeeCode]14. 最长公共前缀

    题目链接:https://leetcode-cn.com/problems/longest-common-prefix/ 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀 ...

  9. hdoj 2594 Simpsons’ Hidden Talents 【KMP】【求串的最长公共前缀后缀】

    Simpsons' Hidden Talents Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java ...

随机推荐

  1. Maven常用的几个命令

    mvn clean.mvn package:如果本地仓库中没有需要的jar,第一次执行命令的时候会从仓库下jar包 *) mvn clean :clean项目 *) mvn compile :  编译 ...

  2. Gym 101194C / UVALive 7899 - Mr. Panda and Strips - [set][2016 EC-Final Problem C]

    题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...

  3. (一)juc线程高级特性——volatile / CAS算法 / ConcurrentHashMap

    1. volatile 关键字与内存可见性 原文地址: https://www.cnblogs.com/zjfjava/category/979088.html 内存可见性(Memory Visibi ...

  4. CLOSE_WAIT状态的原因与解决方法(转载留自己看)

    这个问题之前没有怎么留意过,是最近在面试过程中遇到的一个问题,面了两家公司,两家公司竟然都面到到了这个问题,不得不使我开始关注这个问题.说起CLOSE_WAIT状态,如果不知道的话,还是先瞧一下TCP ...

  5. Web开发——HTML基础(HTML响应式Web设计 Bootstrap)

    参考: 参考:http://www.bootcss.com/ 目录: 1.什么是响应式 Web 设计? 2.创建自己的响应设计 3.使用 Bootstrap 1.什么是响应式 Web 设计? RWD ...

  6. xcode工程编译错误之iOS解决CUICatalog: Invalid asset name supplied问题

    [问题分析]: 这个问题其实是老问题,产生原因就是因为在使用的时候 [UIImage imageNamed:]时,图片不存在或者传入的图片名为nil. [解决方法]: 添加一个系统断点,来判断如果图片 ...

  7. dbgrid 无法显示表中所有字段

    有时表中字段有更新,dbgrid无法显示表中字段. 解决办法: 1.adoquery断开 2. dbgrid字段全部删除 3.adoquery打开 4.dbgrid选择全部字段

  8. ES6 Reflect 与 Proxy

    概述 Proxy 与 Reflect 是 ES6 为了操作对象引入的 API . Proxy 可以对目标对象的读取.函数调用等操作进行拦截,然后进行操作处理.它不直接操作对象,而是像代理模式,通过对象 ...

  9. Hive为什么要启用Metastore?

    转载来自: https://blog.csdn.net/qq_40990732/article/details/80914873 https://blog.csdn.net/tp15868352616 ...

  10. oracle数据库导出与导入

    一.查询导出库的字符集 3个 1.查询oracle server端的字符集 SQL>select userenv('language') from dual; USERENV('LANGUAGE ...