leetcode练习题四:最长公共前缀

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

示例 1:输入: [“flower”,”flow”,”flight”]
输出: “fl”

示例 2:输入: [“dog”,”racecar”,”car”]
输出: “”
解释: 输入不存在公共前缀。

说明:所有输入只包含小写字母 a-z 。

个人觉得这个做法很暴力,但是还没想到更好的解决办法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public String longestCommonPrefix(String[] strs) {
//思路:最长公共前缀 ,最长只能为数组里最短的那个支付串。
// 1.先找出最短字符串.
// 2.循环比较:循环最短字符串的长度,和其他字符串比较每个字符是否相等,直到有一个不等则返回前面所有相等的字符
String prefix = "";
if(strs.length==0){
return prefix;
}
String min =strs[0];
for (int i = 1; i < strs.length; i++) {
if (strs[i].length() < min.length()) {
min = strs[i];
}
}
int x=0;
boolean flag = false;
for (int i = 0; i < min.length(); i++) {
for (int j = 0; j < strs.length - 1; j++) {
char current = strs[j].charAt(i);
char next = strs[j + 1].charAt(i);
//如果当前值不等于下一个值,改变flag
if (current != next) {
flag = true;
}
}
//终止循环
if (flag) {
break;
}
x++;
}
return strs[0].substring(0,x);
}

-------------笔者水平有限,若有错漏,欢迎指正!-------------
坚持原创技术分享,您的支持将鼓励我继续创作!