LeetCodeの説明| 14最長共通接頭辞(縦比較C ++)

タイトル説明(簡単な難易度)

オリジナルタイトルリンク
ここに画像を挿入説明

アルゴリズム

(垂直比較) ザ・ n個 * メートル O(N * M)

標準として第1の文字列(1)、その文字の各々を横断する
、(2)現在の位置が同じであるかどうかを他の文字列を比較しながら、横断
現在位置が文字列または位置の範囲を超えた場合(3)が発生文字の最初の文字の位置と一致していない文字、最長共通接頭辞が返されます(SUBSTRとリターン)

時間複雑 ザ・ n個 * メートル O(N * M)

  • アップ比較、もちろん、それは通常の状況下で必要とされないN文字列形式、最長文字列の長さM、N Mの同一の列の最悪の場合の長さであり、すべての文字列比較、 n個 * メートル n個 L E n個 MINLEN N * それは上の文字

宇宙複雑 ザ・ 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]; // 如果只有一个字符串,则返回第一个字符串
    }
};
// Saturday, March 7, 2020 15:26:35
class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        // up and down mode
        
        // 1. Traversal each character in first character
        
        // 2. Just if other character in same index is equal
            
        // flower
        // flow
        // flight
        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 (strs[j][i] != c || i >= strs[j].size()) {
                    return strs[0].substr(0, i);
                }
            }
        }
        
        return strs[0];
    }
};

最後に書かれたブログは思考の知識をまとめたコンピュータサイエンスの分野を中心に、レビューは、私の目標を理解することは容易である各ブログを書くために、:技術と知識を共有することは喜びである、と私はみんなを歓迎します一緒に学習の交換をして、そこにコメントエリアには疑問もありませんが、またあなた(^∀^●)との深い交流を楽しみにすることができます

308元記事公開 ウォンの賞賛149 ビュー150,000 +を

おすすめ

転載: blog.csdn.net/qq_43827595/article/details/104609017