下面的可能是最容易想到的最普通的题解了吧
垂直扫描法
import java.util.*; public class Solution { /** * * @param strs string字符串一维数组 * @return string字符串 */ public String longestCommonPrefix (String[] strs) { //特殊情况处理 if(strs==null||strs.length==0) return ""; if(strs.length==1) return strs[0]; //找出长度最短字符串的元素的索引 int minLengthIndex=0 ; for(int i=1;i<strs.length;i++){ if(strs[i].length()<strs[minLengthIndex].length() ){ minLengthIndex = i; } } //最短字符串交换到0号位置 if(minLengthIndex!=0){ String temp = strs[0]; strs[0]=strs[minLengthIndex]; strs[minLengthIndex]=temp; } //取出0号元素的第i个字符,查询后面元素的第i个字符是否与之相同 for(int i=0;i<strs[0].length();i++){ char ch = strs[0].charAt(i); for(int j=1;j<strs.length;j++){ if(ch!=strs[j].charAt(i)){ //遇到不相同的返回0号元素前面已验证通过的子串//i=0时 会返回"" return strs[0].substring(0,i); } } } //直到0号元素的字符遍历完毕,返回0号元素的值 return strs[0]; } }