问题
给定一个字符数组,获取该数组中多个字符的最大公共前缀,如果不存在则返回空串
输入:["flower","flow","flight"]
输出:"fl"
思路
1)假定数组中第一个字符为最大公共前缀,并和数组中其他字符逐一进行比较,获取公共部分
2)判断第二个字符中是否存在第一个字符,如果不存在,则对第一个字符截取一位并继续比较, 如果存在,则继续对后续其他字符进行逐一比较。
实现
public class LongestCommonPrefix {
public static void main(String[] args) {
String[] strings = new String[]{"flower","flow","flight"};
String result = longestCommonPrefix(strings);
System.out.println(result);
}
//默认第一个字符是公共前缀,逐一的和后面的字符进行比较
private static String longestCommonPrefix(String[] strs) {
//获取第一个字符
String first = strs[0];
//循环比较
int index = 1;
while (index<strs.length){
//不断截取
while (strs[index].indexOf(first) != 0){
//第一个字符缩短一位
first = first.substring(0,first.length()-1);
}
//满足条件继续向后比较
index++;
}
return first;
}
}