[タイトル] LeetCodeブラシ - 3.ノー繰り返し最長の部分文字列

3.ノー繰り返し最長の部分文字列

件名の説明:

文字列を考えると、あなたは、繰り返し文字の最長の文字列のサブ長さを含んでいないかを調べます。

試験例:

  1. 入力:「abcabcbb」
    出力:3
    説明:その長さは3であるので、重複のない文字の最長のサブは、「ABC」であるため。
  2. 入力:「BBBBB」
    出力:1つの
    説明:最長の部分文字列は、その長さが1であるように、「B」のない文字が繰り返されているので。
  3. 入力:「pwwkew」
    出力:3
    説明:その長さが3であるので、「WKE」せずに文字を繰り返し最長のサブ文字列がされているので。
    、「pwkeは」サブシーケンスではなく、部分文字列であるあなたの答えは、長さの部分文字列でなければならないことに注意してください。

問題解決のアイデア:

使用したスライディングウィンドウアルゴリズムの横断文字サブストリングが連続していないときに、入力文字列を横断する、思考を、サブストリングを加え、それ以外の場合は、更新された連続的に繰り返す文字ストリング後続の連続したサブ元の最大電流の最大ランレングスを更新します残りの連続した部分文字列、および繰り返す文字を作ります。

class Solution:
    def lengthOfLongestSubstring(self, s):
        return self.longest(s)

    def longest(self, s, m=0):
        string = ''
        for i in range(len(s)):
            if s[i] not in string:
                string += s[i]
            else:
                m = max(m, len(string))
                string = string[string.index(s[i]) + 1:] + s[i]
        return max(m, len(string))

結果:

ここに画像を挿入説明

リリース5元の記事 ウォンの賞賛0 ビュー347

おすすめ

転載: blog.csdn.net/qq_40772371/article/details/103550954