LeetCode 題解 | 14. Longest Common Prefix(垂直比較 C++)

題目描述(簡單難度)

原題鏈接
在這裏插入圖片描述

算法

(垂直比較) O(nm)O(n * m)

(1)以第一個字符串爲標準,遍歷它的每一位字符
(2) 遍歷的同時,比較其他字符串的當前位置是否都相同
(3)如果出現當前位置超過字符串範圍或該位置的字符與第一個字符的同位置字符不匹配,則返回最長公共前綴(用substr返回)

時間複雜度 O(nm)O(n * m)

  • n爲字符串格式,m爲最長字符串長度,最壞的情況就是 n 個 長度爲 m 的完全一樣的字符串,當然正常情況下是不需要比較所有字符串,最多比較nminLenn * minLen個字符就可以了

空間複雜度 O(1)O(1)

C++代碼

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        // 垂直比較 每個字符串的第i位上的字符
        // leetcode
        // leets
        // leetabs
        
        int n = strs.size();
        if (n == 0) return "";

        for (int i = 0; i < strs[0].size(); i ++) {
            char c = strs[0][i];
            for (int j = 1; j < n; j ++) {
                if (i >= strs[j].size() || c != strs[j][i]) {
                    return strs[j].substr(0, i);
                }
            }
        }

        return strs[0]; // 如果只有一個字符串,則返回第一個字符串
    }
};

寫在最後:我的博客主要是對計算機領域所學知識的總結、回顧和思考,把每篇博客寫得通俗易懂是我的目標,分享技術和知識是一種快樂 ,非常歡迎大家和我一起交流學習,有任何問題都可以在評論區留言,也期待與您的深入交流(^∀^●)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章