編寫一個函數(shù)來查找字符串數(shù)組中的最長公共前綴萝玷。
如果不存在公共前綴掉冶,返回空字符串 ""署惯。
示例 1:
輸入: ["flower","flow","flight"]
輸出: "fl"
示例 2:
輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/longest-common-prefix
解題思路
縱向掃描字符串數(shù)組
leetcode
leet
lees
比如先看第一列是否全部一樣, 在看第二列是否全部一樣, 某一列全部一樣則追加到結果字符串中
當橫坐標超過了某一個字符串的長度, 返回
當比較的字符不同時, 返回
代碼
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0) {
return "";
}
// 將字符串數(shù)組"縱向掃描": ↓↓↓↓↓
// 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();
}
}