编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
题解:可以先对字符串数组进行排序,然后选择第一个作为和后面比较的对象,以第一个字符串的长为最长公共前缀的长度,然后逐个比较,遇到比较不相等的就把最长公共前缀的长度进行改变。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[]a={};
String[]c={"flower","flow","flight"};
System.out.println(longestCommonPrefix(a));
System.out.println(longestCommonPrefix(c));
}
public static String longestCommonPrefix(String[] strs) {
if(strs==null || strs.length==0){ //防止空串的出现
return "";
}
Arrays.sort(strs);//进行排序,
String a=strs[0];
int len=a.length();//记录最长公共前缀的长度
for (int i = 1; i < strs.length; i++) {
//比较两个值
for (int j = 0; j < len; j++) {
if(strs[i].charAt(j)!=a.charAt(j)){//遇到不相等的就跳出循坏
len=j;
break;
}
}
}
return a.substring(0,len);
}
}