要求:
编写函数查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串。
示例:
输入:["flower","flow","flight"]
输出:"fl"
输入:["dog","racecar","car"]
输出:""
不存在公共前缀
思路:
把数组排序,Arrays.sort(strs)排序时就是按照字符顺序排的,再将数组第一个元素和最后一个元素的字符从前往后对比即可。
代码:
public class Main {
public static String replaceSpace(String[] strs) {
//如果检查值不合法就返回空串
if (!checkStrs(strs)) {
return " ";
}
int len = strs.length;
StringBuilder res = new StringBuilder();
//给字符串数组的元素按照升序排序(若包含数字,数字会排在前面)
Arrays.sort(strs);
int m = strs[0].length;
int n = strs[len-1].length;
int num = Math.min(m, n);
for (int i = 0; i < num; i++) {
if (strs[0].charAt(i) == strs[len-1].charAt(i)) {
res.append(strs[0].charAt(i));
} else
break;
}
return res.toString();
}
private static boolean checkStrs(String[] strs) {
boolean flag = false;
if (strs != null) {
//遍历strs检查元素值
for (int i = 0; i < strs.length; i++) {
if (strs[i] != null && strs[i].length() != 0) {
flag = true;
} else {
flag = false;
break;
}
}
}
return flag;
}
public static void main(String[] args) {
String[] strs = {"customer", "car", "cat"};
System.out.println(Main.replaceSpace(strs));
}
}