一、题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
二、思路
题目还算简单,只要求公共前缀,只要从各个字符串下标为0的字符开始比对,只要都相同就是公共字符,将这些字符串成一个字符串就可以了。
三、代码
class Solution {
public String longestCommonPrefix(String[] strs) {
StringBuilder sb = new StringBuilder();
if (null == strs || strs.length == 0){
return sb.toString();
}
int length = strs.length;
String str0 = strs[0];//取第0个字符串准
int i = 0;//记录当前扫描到第几个字符
OUTER:while (true) {
char ch0;//取第0个字符串的第i个字符作为基准
if (str0.length()>i){
ch0 = str0.charAt(i);
}else {
break;
}
boolean same = true;
for (int j = 1 ; j < length;j++) {//从第一个字符串开始
String str = strs[j];
if (str.length()>i){
char curCh = str.charAt(i);//取第j个字符串的第i位字符
if (ch0 != curCh){//与第0个字符串的第i位字符比较
same = false;
break OUTER;//跳出多重循环
}
}else {
same = false;
break OUTER;//跳出多重循环
}
}
if (same){
sb.append(ch0);
}
i++;
}
return sb.toString();
}
}
四、测试效果