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

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

示例 1:

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

示例 2:

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

提示:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

思路分析:如果是个空数组,直接返回空字符串。以第一个字符串作为标准,分别与后面的每个字符串进行比较。

代码实现:

import java.util.Iterator;

//题目链接:https://leetcode.cn/problems/longest-common-prefix/
public class T14 { public static void main(String[] args) {
// 测试一把
Solution solution = new Solution();
String[] str = { "flower","flow","flowight"};
String string = solution.longestCommonPrefix(str);
System.out.println(string);
} } class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0) {//如果是个空数组,直接返回空字符串
return "";
}
String ans = strs[0];// 先把数组第一个字符串作为标准
for (int i = 1; i < strs.length; i++) {// 分别与后面的字符串进行比较
int j = 0;
/**
* int j = 0; => 这个写在外面是为了后面能够得到j的值,
* 从而得到在哪里有公共前缀,如果写在里面,一旦跳出for循环,将无法得到
* 公共前缀的坐标
*/
for (; j < ans.length() && j < strs[i].length(); j++) {
/**
* j < ans.length() && j < strs[i].length() => 比较的时候,总得
* 在两个要比较的字符串的长度内进行比较,更准确的说,应该是在
* 两个字符串中的较短的字符串长度内进行比较
*/ if (ans.charAt(j) != strs[i].charAt(j)) {
//只要发现有一个字符不匹配,则立即跳出循环
break;
}
}
ans = ans.substring(0, j);//得到公共前缀
/**
* substring(int beginIndex, int endIndex)方法的作用:
* 返回一个新字符串,它是此字符串的一个子字符串。
* 该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。
* 因此,该子字符串的长度为 endIndex-beginIndex。
示例: "hamburger".substring(4, 8) returns "urge"
"smiles".substring(1, 5) returns "mile" */
if (ans.equals("")) {//如果发现没有公共前缀,则返回空字符串
return ans;
} }
return ans;//返回最终结果
}
}

运行结果:

最长公共前缀(Java)的更多相关文章

  1. 最长公共前缀(java实现)

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

  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. python 异常捕捉与异常处理

    简介 在实际开发中,为了防止异常界面直接被用户看到,往往我们会采用捕捉异常的方式来进一步处理异常. 异常捕捉 如下代码由于下标越界会导致异常 data = range(10) print(data[1 ...

  2. python 生成Windows快捷方式

    此处以虚拟机镜像快捷方式为例 link_filepath:快捷方式的生成路径 win32_cmd:需要执行的应用程序 arg_str:exe的参数 快捷方式的目标:由win32_cmd + arg_s ...

  3. 理解JavaScript中的window对象

    前言 每个JavaScript环境都有一个全局对象(global object).在全局范围内创建的任何变量实际上都是这个对象的属性,而任何函数都是它的方法.在浏览器环境中,全局对象是window对象 ...

  4. Vue 配置代理

    说明:这里的vue代理是指用vue静态服务器做代理.使用的是 http-proxy-middleware 这个模块(这个模块相当于是node.js的一个插件). 版本: vue-cli 3.0以上 修 ...

  5. 整除分块套杜教筛为什么是 O(n^2/3) 的

    假设我们要筛一个东西叫做 \(f\) . 记 \[D(n)=\left\{n,\left\lfloor\dfrac n2\right\rfloor,\left\lfloor\dfrac n3\righ ...

  6. 推荐一款国产的高性价比profinet分布式IO模块

    国产profinet分布式IO模块,兼容西门子PLC,可以平替西门子小型分布式IO模块,最大支持挂在32个IO,支持512个变量数据采集!采用高速背板通讯协议,轮询时间少于1MS.

  7. 小试牛刀:Linux中部署RabbitMQ

    一.下载地址 本人采用的是 RabbitMQ 3.8.20+ Erlang 23.3.4.16 1.Erlang下载:https://github.com/erlang/otp/releases 2. ...

  8. Python 阿里云盾滑块验证

    本文仅供学习交流使用,如侵立删! 记一次阿里云盾滑块验证分析并通过 操作环境 win10 . mac Python3.9 selenium.pyautogui 分析 最近在做中国庭审公开网数据分析的时 ...

  9. 2. 组复制技术架构 | 深入浅出MGR

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1. 传统主从复制技术架构 传统主从复制的方式是在master节点上执行数据更新事务,而后记录这些事务到binlog中,再 ...

  10. 未关中断情况下的hardlock

    最近遇到一例crash,3.10内核,hardlock,查看对应的堆栈,中断是使能的. 查看对应的hrtimer_interrupts和hrtimer_interrupt_save的值,发现确实相等. ...