题目:

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

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

示例 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;}
}

转载于:https://www.cnblogs.com/youdiaodaxue16/p/10749844.html

最长公共前缀(java实现)相关推荐

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

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

  2. java小编程---最长公共前缀

    package com.ujiuye.two; /*** 最长公共前缀:输入["file","filuueh","fighhughjvsa" ...

  3. java两个字符串前缀_java – 找到两个字符串的最长公共前缀

    我想找到两个字符串的最长公共前缀. 有没有办法循环我的最后几个if语句,以便我可以结束彼此不匹配的最后几个字符? System.out.println("Enter the first st ...

  4. [Leedcode][JAVA][第14题][最长公共前缀][二分][横竖扫描][分治]

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

  5. java查询字符串公共前缀_No.14 最长公共前缀(Java)

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

  6. 力扣——最长公共前缀

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

  7. LeetCode 第 59 场力扣夜喵双周赛(最短路径数+迪杰斯特拉、动态规划+最长公共前缀问题) / 第255场周赛(二进制转换,分组背包,子集还原数组(脑筋急转弯))

    第 59 场力扣夜喵双周赛 两道400多五百,后两道都写出代码来了,但是都有问题,哭辽- 还有刚开始第一道测试好慢,搞心态了 5834. 使用特殊打字机键入单词的最少时间 有一个特殊打字机,它由一个 ...

  8. 【力扣网练习题】最长公共前缀

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

  9. leetcode--最长公共前缀--python

    文章目录 题目 题目详情 示例 解题思路 代码 运行结果 最佳方案 题目 题目详情 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 ...

最新文章

  1. as3.0中如何阻止事件冒泡?
  2. Neurala与CSDN宣布战略合作,将一站式AI平台BrainBuilder带给中国开发者
  3. Codewars Vasya - Clerk--6 kyu--Python解法
  4. postgresql GUC 参数
  5. 性别从后台获取得值的那点事儿
  6. 1131 Subway Map (30 分)【难度: 难 / Dijkstra最短路】
  7. 给具有SAP传统产品ABAP开发经验的朋友介绍SAP C4C
  8. php年月日滚动选择,Unity3d—做一个年月日选择器(Scroll Rect拖动效果优化)— 无限滚动 + 锁定元素...
  9. linux la 的使用方法,Linux简介及常用命令使用4--linux高级命令与技巧(示例代码)
  10. 2021天猫双11:阿里巴巴业务已全部跑在阿里云上
  11. Ray.Xu 写得 RTEMS 介绍(最新版本,全面,覆盖了CVS Head)
  12. SAS Viya应用简介
  13. 随手记android面试题,synchorinzed的一个面试题
  14. 以太坊 事务处理流程
  15. 在windows 2008 R2上无法运行vc 2015的程序,显示缺少api-ms-win-crt-string-|1-1-0.dll的解决
  16. linux中文件夹删不掉,Linux无法删除文件夹 Device or resource busy
  17. 环境会计信息披露问题研究
  18. 在腾讯云上创建CLAA产品
  19. 数据可视化笔记7 网络数据可视化
  20. 悲观锁 乐观锁的原理及应用场景

热门文章

  1. 如何写出《黄焖鸡米饭是怎么火起来的》这样的文章
  2. iOS动态部署之RSA加密传输Patch补丁
  3. Ceph的架构(一)
  4. Android JNI入门第一篇——HelloJni
  5. [整理]MySql批量数据导入Load data infile解决方案
  6. System Center 2012与vCenter Operations 产品功能对比
  7. SQL Server 2000 安装中的“一般性网络错误”
  8. 昆曲,古琴,苏州评弹
  9. 专门给大学做宣传视频的公司,一直干了16年,服务110多大学: 专业的力量
  10. 【转】从Mac/OS和iOS开放源码浅谈UNIX家谱