编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
解题思路
纵向扫描字符串数组
leetcode
leet
lees
比如先看第一列是否全部一样, 在看第二列是否全部一样, 某一列全部一样则追加到结果字符串中
当横坐标超过了某一个字符串的长度, 返回
当比较的字符不同时, 返回
代码
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0) {
return "";
}
// 将字符串数组"纵向扫描": ↓↓↓↓↓
// leetcode
// leet
// lees
StringBuilder result = new StringBuilder();
// i是纵向扫描的横坐标
// j是纵向扫描的纵坐标
for (int i = 0; i < strs[0].length(); i++) {
// 用第一个字符串的索引i所指的字符作为要比较的字符
char cur = strs[0].charAt(i);
// 从上往下扫描字符串中同一列的字符
for (int j = 1; j < strs.length; j++) {
// 如果横坐标超过了某一个字符串的长度, 返回
if (i >= strs[j].length()) {
return result.toString();
}
// 如果当前字符串对应索引i的字符不为cur, 返回
if (strs[j].charAt(i) != cur) {
return result.toString();
}
}
// 当走到这里时说明i这一列的字符全部相同, 追加字符
result.append(cur);
}
return result.toString();
}
}