14---最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
import java.util.Arrays;
/**
* @author LanceQ
* @version 1.0
* @time 2021/5/2 18:04
*/
public class LongestCommonPrefix {
public static void main(String[] args) {
String[] strs = { "customer", "car", "cat" ,"cb","cud" };
// String[] strs = { "customer", "car", null };//空串
// String[] strs = { "flower","flow","flight"};//fl
// String[] strs = {};//空串
// String[] strs = null;//空串
System.out.println(replaceSpace(strs));// c
}
private static String replaceSpace(String[] strs) {
StringBuilder stringBuilder = new StringBuilder();
if(!checkstr(strs)){
return "";
}
Arrays.sort(strs);
int start=strs[0].length();
int end=strs[strs.length-1].length();
int n=Math.min(start,end);
for (int i = 0; i < n; i++) {
if(strs[0].charAt(i)==strs[strs.length-1].charAt(i)){
stringBuilder.append(strs[0].charAt(i));
}else {
break;
}
}
return stringBuilder.toString();
}
private static boolean checkstr(String[] strs) {
boolean flag=false;
if(strs!=null){
for (int i=0;i<strs.length;i++){
if(strs[i]!=null&&strs[i].length()!=0){
flag=true;
}else {
flag=false;
break;
}
}
}
return flag;
}
}
运行结果:
c
-
先利用checkstr()方法去检查strs数组是否存在空值,如果存在null的话,就可以直接返回空值,不用进行下面的比较了。
-
对数组进行排序,以第一个为例,排序后的情况是这样的“ car : cat : cb : cud : customer ”。
-
可以直接对第一个和最后一个进行比较,如果比较相同位置有相同字符的话,其他字符串也会有相同的字符串,如果没有的话,就直接返回即可。
参考:https://leetcode-cn.com/problems/longest-common-prefix/