LeetCode 014 最长公共前缀

LeetCode 字符串处理

问题

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""

示例1:

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

示例2:

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

解答

思路:先假设最长公共前缀就是字符串数组中第一个字符串,则去循环判断数组中后续的字符串中是否有该前缀,即子串是否在所以为0的位置上,若索引等于0,则当前字符串包含该前缀,若不等于0,则需将这公共前缀尾部裁去一个字符,继续遍历后续的字符串是否包含新前缀(索引是否等于0)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0)
return "";
int N = strs.length;
String prefix = strs[0];
for(int i = 0; i < N; i++) {
while(strs[i].indexOf(prefix) != 0) {
prefix = prefix.substring(0, prefix.length() - 1);
if(prefix.isEmpty())
return "";
}
}
return prefix;
}
}
------------- 本 文 结 束 感 谢 您 的 阅 读 -------------
坚持原创技术分享,您的支持将鼓励我继续创作!
0%