题解 | #最长公共前缀# 小白能听懂!一定能!
最长公共前缀
http://www.nowcoder.com/practice/28eb3175488f4434a4a6207f6f484f47
import java.util.*;
public class Solution {
/*
解题思路:
我们假设数组的首元素就是最长公共前缀。那么就需要验证。怎么验证?
遍历这个首字符串元素,没遍历出一个字符,就拿着这个字符 与 数组剩余后面的字符串对应的位置看看是否相等。
如果都相等!说明当前验证的这个字符是符合的。添加到结果集中。
如果说不相等 或者 当前遍历出这个字符的下标 超过 后面字符串的任何一个长度都说明是不符合的。
直接 终止程序!
*/
public String longestCommonPrefix (String[] strs) {
// 定义结果集
StringBuilder res = new StringBuilder();
// 数组性校验,如果为空直接终止了。
if(strs.length==0) return res.toString();
// 假设首元素就是最长公共前缀
String firstStr=strs[0];
// 遍历这个首元素
for(int i=0;i<firstStr.length();i++){
// 每遍历一次,获取对应下标的字符。
char c = firstStr.charAt(i);
// 拿着这个字符 与 数组剩余的字符串比较 对应下标的位置看看是否相等! 如果剩余字符串对应的i下标位置都相等,说明当前这个字符是符合的。添加到结果集中。 如果说某一个不相等 或者 当前i下标超过任何一个字符串的长度都是不符合的。直接终止程序!
for(int j=1;j<strs.length;j++){
String nextStr=strs[j];
if(!(i<nextStr.length() && c==nextStr.charAt(i))){
// 不符合
return res.toString();
}
}
// 程序能执行到此处,说明当前字符是符合结果集的
res.append(c);
}
return res.toString();
}
}