チャレンジ文字列
繰り返しのない文字の最長部分文字列
文字列を考えると、あなたは、繰り返し文字の最長の文字列のサブ長さを含んでいないかを調べます。
例1:
入力: "abcabcbbを"
出力:3
説明:最長非反復サブ文字列であるため"abc",所以其
長さ3の。
例2:
入力: "BBBBB"
出力:1
説明:最長非反復文字列が子供であるため"b"
、その長さが1です。
例3:
入力: "pwwkew" 出力:3 説明:最長非反復文字列が子供なので"wke"
、とてもその長さは3です。 あなたの答えは、長さの部分文字列でなければならないことに注意してください、"pwke"
あるサブシーケンス、文字列ではありません。
問題の解決策:
非再現性のセットを使用します。我々は、2つのポインタのLとRを記録し、それぞれ、左及び右境界は、rは、ポインタを移動する場合全く集合S [R]、アピールを繰り返すステップが存在しなくなるまで、集合S [R]、左ポインタの動きに現れるセット。
参照コード:
1 クラスソリューション{ 2 公共: 3 int型 lengthOfLongestSubstring(ストリングS){ 4 セット < チャー > ST。 5 int型の L = 0、R = 0、ANS = 0 。 6 一方、(R < s.size()) 7 { 8 であれば(!st.count(S [R])) 9 { 10 st.insert(S [R])。 11の ANS = MAX(ANS、(INT )st.size())。 12 R ++ ; 13 } 14 他 st.erase(S [L ++ ])。 15 } 16 リターンANS。 17 } 18 }。
〜継続するには