
求解代码
java
public String longestCommonPrefix (String[] strs) {
if(strs==null||strs.length==0){
return "";
}
int rows = strs.length;
int cols = strs[0].length();
for(int i=0;i<cols;i++){
char c = strs[0].charAt(i);
for(int j=1;j<rows;j++){
if(strs[j].length()==i||strs[j].charAt(i)!=c){
return strs[0].substring(0, i);
}
}
}
return strs[0];
}
小贴士
纵向扫描的思路大概是:
以I【字符串数组】的第一个字符串的字符位置 为 "列",以i为列索引遍历每一列;
取第一个字符串的当前列字符c作为基准,以j为行索引
遍历【字符串数组】的其他所有字符串,对比同列的字符。
如果某个字符串长度等于当前列索引了,说明这个字符串已经没有更多字符了,
或者同列字符不一致,
那就说明公共前缀到i-1列就结束了,
可直接返回strs[0].substring(0,i);
如果所有列都对比通过,说明第一个字符串就是最长公共前缀,直接返回strs[0]。