最长公共前缀(Java)
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 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)的更多相关文章
- 最长公共前缀(java实现)
题目: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow& ...
- LeetCode--014--最长公共前缀(java)
编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow" ...
- leetcode.字符串.14最长公共前缀-Java
1. 具体题目 编写一个函数来查找字符串数组中的最长公共前缀.如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","fl ...
- Java算法练习——最长公共前缀
题目链接 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 说明: 所有输入只包含小写字母 a-z . 示例 1 输入: [&qu ...
- Java实现 LeetCode 14 最长公共前缀
14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower",&quo ...
- [LeetCode]14.最长公共前缀(Java)
原题地址: longest-common-prefix 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入:st ...
- lintcode :最长公共前缀
题目 最长公共前缀 给k个字符串,求出他们的最长公共前缀(LCP) 样例 在 "ABCD" "ABEF" 和 "ACEF" 中, LCP ...
- [LeeCode]14. 最长公共前缀
题目链接:https://leetcode-cn.com/problems/longest-common-prefix/ 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀 ...
- hdoj 2594 Simpsons’ Hidden Talents 【KMP】【求串的最长公共前缀后缀】
Simpsons' Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
随机推荐
- Windows环境中Hadoop配置
我们之前已经在Windows中安装好了Hadoop,并且配置了环境变量.如果要在本地上运行的,还需要这两个文件,可以去找一下,放到Hadoop的bin目录下面.这样我们写好的mr程序就可以直接在Win ...
- CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!) A-E
比赛链接 A 题解 知识点:思维,模拟. 发现 \(b\) 串第一个字符是 \(1\) 则只能使用 max , \(0\) 则只能使用 min ,随后只需要模拟到 \(a\) 串剩余 \(m\) 个字 ...
- Reactive UI -- 反应式编程UI框架入门学习(一)
推荐一个反应式编程的MVVM跨平台框架. 反应式编程 反应式编程是一种相对于命令式的编程范式,由函数式的组合声明来构建异步数据流.要理解这个概念,可以简单的借助Excel中的单元格函数. 上图中,A1 ...
- 基于C++17的泛型函数容器实现方法研究
- WebView2 通过 PuppeteerSharp 实现爬取 王者 壁纸 (案例版)
此案例是<.Net WebView2 项目,实现 嵌入 WEB 页面 Chromium内核>文的续集. 主要是针对WebView2的一些微软自己封装的不熟悉的API,有一些人已经对 Pup ...
- 浅淡 Apache Kylin 与 ClickHouse 的对比
作者简介 周耀,Kyligence 解决方案架构师,Apache Kylin.Apache Superset Contributor. Apache Kylin 和 ClickHouse 都是目前市场 ...
- Git 03 理论
参考源 https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.999.0.0 版本 本文章基于 Git 2.35.1.2 四个区域 G ...
- Linux 12 安装Docker
参考源 https://www.bilibili.com/video/BV187411y7hF?spm_id_from=333.999.0.0 版本 本文章基于 CentOS 7.6 这里使用 yum ...
- 解读Gartner2022年组装式应用报告:从组装式企业到组装式应用
摘要:"到2023年,采用组装式方法的组织在新特性交付速度比竞争对手快80%."Gartner 为什么未来的企业是组装式的? 物竞天择,适者生存,企业也是一样,在发展过程中,会为了 ...
- 慢SQL,压垮团队的最后一根稻草!
一.什么是慢 SQL 什么是慢SQL?顾名思义,运行时间较长的 SQL 语句即为慢 SQL! 那问题来了,多久才算慢呢? 这个慢其实是一个相对值,不同的业务场景下,标准要求是不一样的. 我们都知道,我 ...