[LeetCode] #14 Longest Common Prefix 解題

題目連結

題型解說

這是一題難度為簡單的題目

需要設計一個方法,此方法會傳入一個字串陣列 strs

回傳陣列中所有字串的共同前綴

範例:

strs = ["flower","flow","flight"],則回傳 "fl"
strs = ["dog","racecar","car"],則回傳 "",找不到共同前綴

解題思路

這題就簡單的使用暴力法,以第一個字串當基準比對每一個 char

如果遇到不對的就直接回傳結果,可以用雙 for迴圈 也可以使用 while迴圈,隨個人喜好

程式碼

Java

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs.length == 0 || strs[0].length() == 0) {
            return "";
        }
        
        if (strs.length == 1) {
            return strs[0];
        }
        
        int i = 0; // 當前的 char 索引
        StringBuilder sb = new StringBuilder();
        
        while (true) {
            char target = strs[0].charAt(i);
            
            for (int j = 1, len = strs.length; j < len; j++) {
                if (i == strs[j].length()) { // 如果索引已經超過該字串的長度就回傳當前結果
                    return sb.toString();
                }
                if (strs[j].charAt(i) != target) { // 如果比對失敗就回傳當前結果
                    return sb.toString();
                }
            }
            
            sb.append(target);
            i++;
            
            if (i == strs[0].length()) { // 基準字串已跑完就回傳當前結果
                return sb.toString();
            }
        }
    }
}