给定一个字符串数组,求最长公共前缀
测试用例:["flower","flow","flight"]
测试结果:"fl"
代码思路:例如["flower","flow","flight"],取第一个元素flower与后面的元素比较,依次取f l o w e r与对应的下标比较
比较
f f f
l l l
o o i
w w g
e h
r t
/**
* 最长公共前缀
*
* @param strs
* @return
*/
public static String longestCommonPrefix(String[] strs) {
// 入参的参数校验
if(strs == null || strs.length == 0){
return "";
}
// 只有一个元素,返回自己
if(strs.length == 1){
return strs[0];
}
String maxStr = "";
int indexStrs = 0;
String resStr = "";
// 遍历元素,如果有一个是空,该最长公共前缀就是空
for(String s : strs){
if(s == null || "".equals(s) || " ".equals(s)){
return "";
}
}
// 循环条件为访问下标不能大于第一个元素的长度
while(indexStrs < strs[0].length()){
// 按下标拼接第一个元素
maxStr += strs[0].toCharArray()[indexStrs];
for(String s : strs){
// 如果maxStr下标指向的字母和 遍历到的下标的元素不一致,即可退出
if(s.toCharArray()[indexStrs] != maxStr.toCharArray()[indexStrs]){
return resStr;
}
}
// resStr记录着maxStr的上一个状态
resStr = maxStr;
indexStrs ++;
}
return resStr;
}