1. 题目:
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,则返回""。
示例1:
输入: ["flower","flow","flight"]
输出: "fl"
示例2:
输入: ["dog","racecar","car"]
输出: ""
说明:
所有输入只包含小写字母 a-z
2. 代码实现
public class LongestCommonPrefix {
public static void main(String[] args) {
String[] array = {"flower","flow","flight"};
System.out.println(getSolutionOne(array));
System.out.println(getSolutionTwo(array));
}
/**
* 横向依次比较数组中每个元素
* 比较数组相邻两元素字符
* @param array
* @return
*/
public static String getSolutionOne(String[] array){
if(array == null||array.length == 0){
return "";
}else {
String s0 = array[0];
for(int i = 1; i < array.length; i++) {
String si = array[i];
int length = Math.min(s0.length(), si.length());
int j = 0;
while (j < length && s0.charAt(j) == si.charAt(j)) {
j++;
}
s0 = s0.substring(0, j);
}
return s0;
}
}
/**
* 纵向依次比较数组中每个元素
* 比较数组所有元素的同位字符
* @param array
* @return
*/
public static String getSolutionTwo(String[] array){
if(array == null||array.length == 0){
return "";
}else {
int length = array[0].length();
for(int i = 0; i < length; i++){
char c = array[0].charAt(i);
for(int j = 1; j < array.length; j++){
if(i==array[j].length()||c!=array[j].charAt(i)){
return array[0].substring(0,i);
}
}
}
return array[0];
}
}
}