问题:
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。
解答:
leetcode官方做法为纵向扫描,如下图
从前往后遍历每一个字符串的每一列,比较相同列上的字符是否相同,相同则找下一列继续对比;如果不同则停止,当前列之前的为公共部分。
下面为官方解法的代码:
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
int length = strs[0].length();
int count = strs.length;
for (int i = 0; i < length; i++) {
char c = strs[0].charAt(i);
for (int j = 1; j < count; j++) {
if (i == strs[j].length() || strs[j].charAt(i) != c) {
return strs[0].substring(0, i);
}
}
}
return strs[0];
}
}