14. 最長(zhǎng)公共前綴

編寫(xiě)一個(gè)函數(shù)來(lái)查找字符串?dāng)?shù)組中的最長(zhǎng)公共前綴。

如果不存在公共前綴,返回空字符串 ""。

示例 1:

輸入:strs = ["flower","flow","flight"]
輸出:"fl"
示例 2:

輸入:strs = ["dog","racecar","car"]
輸出:""
解釋:輸入不存在公共前綴。

來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/longest-common-prefix
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

解題思路及方法

挺簡(jiǎn)單的一道題,首先字符串?dāng)?shù)組長(zhǎng)度小于等于1,直接返回它第一個(gè)元素。然后說(shuō)下我的思路,我將首字符串作為參照字符串跟剩下的每一個(gè)字符串作比較,從首字符串的首位開(kāi)始,只要有一位相同,就count++,然后繼續(xù)判定,然后只要第一次遇見(jiàn)不相同,就break,開(kāi)始首字符串跟下一個(gè)字符串比較。
用一個(gè)list記錄首字符串跟剩下每一個(gè)字符串公共字符的個(gè)數(shù),只要list里面有0元素,就說(shuō)明至少有一個(gè)字符串跟首字符串沒(méi)有公共前綴,返回空。否則就找到list里面最小的值,將首字符串的0-minLen賦給res,返回res。

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs.length <= 1) {
            return strs[0];
        }
        // 初始值
        String res = strs[0];
        List<Integer> list = new ArrayList<>();
        for (int i = 1; i < strs.length; i++) {
            // 獲取兩者最短長(zhǎng)度
            int len = Math.min(res.length(), strs[i].length());
            int count = 0;
            for (int j = 0; j < len; j++) {
                if (res.charAt(j) == strs[i].charAt(j)) {
                    count++;
                } else {
                    break;
                }
            }
            list.add(count);
        }
        // 判斷是否有公共前綴
        if (list.contains(0)) {
            return "";
        } else {
            int minLen = Collections.min(list);
            res = res.substring(0, minLen);
        }

        return res;
    }
}

結(jié)果如下:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容