LeetCode 14 最长公共前缀,以第一个串为基准,逐位跟其他串比对。
🟢 最长公共前缀
找字符串数组的最长公共前缀。
["flower","flow","flight"] → "fl"
以第一个字符串为模板,逐位扫描。当某一位上的字符不是所有串都有、或者某串的这一位跟它不一样,前缀就到此为止。
java
public String longestCommonPrefix(String[] strs) {
for (int col = 0; col < strs[0].length(); col++) {
char c = strs[0].charAt(col);
for (int row = 1; row < strs.length; row++) {
if (col >= strs[row].length() || strs[row].charAt(col) != c)
return strs[0].substring(0, col); // 前缀到此为止
}
}
return strs[0]; // 第一个串全匹配
}
注意先判断 col >= strs[row].length() 再取 charAt------如果有一个字符串已经到头了,直接返回当前前缀。先判越界再判不等,顺序反了会抛异常。
这题没算法难度,但考察基本的字符串操作习惯。用 substring 返回结果比用 StringBuilder 拼接简洁。
这题有人用 A 有人用 B,你习惯哪种写法?评论区贴一下你的解法,以后复盘直接看自己的版本。