下面的可能是最容易想到的最普通的题解了吧
垂直扫描法
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];
}
}
京公网安备 11010502036488号