LeetCode-14-最长公共前缀

题目

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

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

示例 1:

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

示例 2:

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

提示:

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

题解

这一题其实并不难,我的想法是:先把第一个字符串默认为最长前缀,然后从第二个开始比较,依次比较每个字母,出现第一个不相同的字母的时候就停止比较,将字符串进行截取(只保留相同的部分)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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;
// 循环条件,比两个字符串长度都短
for (; j < ans.length() && j < strs[i].length(); j++) {
if (ans.charAt(j) != strs[i].charAt(j))
break;
}
// 截取字符串
ans = ans.substring(0, j);
// 如果ans为空了,直接返回不用比较了
if (ans.equals(""))
return ans;
}
return ans;
}
}

LeetCode-14-最长公共前缀
https://excelius.xyz/leetcode-14-最长公共前缀/
作者
Ther
发布于
2024年6月11日
许可协议