Liqueuの質問:3。文字が繰り返されていない最長の部分文字列

主題の要件

文字列を指定して、繰り返し文字を含まない最長の部分文字列の長さを調べてください。

トピックリンク

促す

ここに画像の説明を挿入

私のコード

class Solution {
    
    
public:
    int lengthOfLongestSubstring(string s) {
    
    
        unordered_set<char> set;
        unsigned lenth = s.size();
        int left = 0, right = 0, maxLenth = 0;
        while (left < lenth)
        {
    
    
            while (right < lenth && set.count(s[right]) == 0)
            {
    
    
            set.insert(s[right++]);
            }

            maxLenth = std::max(maxLenth, right - left);
            set.erase(s[left++]);
        }
        return maxLenth;
    }

};

学んだこと

1.スライディングウィンドウの適用:左右の間隔により、分析サブストリングが制限されます。左を制御することにより、部分文字列は「左端から開始」に限定されません。1つずつ右に移動することで、文字列全体を最終的に分析できます。

2.順序付けされていないコンテナセットの使用:この問題セットは、分析部分文字列が持つ文字を保存します。また、setのcount関数を使用して、保存された分析サブストリングに新しい文字がすでに存在するかどうかを判別します。

3.Leetcodeのc ++環境:
名前空間stdを使用し
、必要なコンテナーヘッダーファイルを自動的にインクルードします。
現時点ではすべてを使用できるようです。

おすすめ

転載: blog.csdn.net/youyadefeng1/article/details/113402649