[Leetcode] Longest Substring Without Repeating Characters

1180 ワード


私の考えの論理


▼max=重複しないアルファベットからなる最長単語長(cntの最大値)
▼s=重複しないアルファベットからなる単語
cnt=sの長さ

  • パラメータstr文字列をofに変換し、strの単語にs文字列が含まれているかどうかを探索します.

  • 含まない場合👉 cnt counting、sに単語を追加
    すでに含まれている場合は、繰り返します.👉 cnt=1,sはその単語の値として、前に追加したすべての値をリセットできます.
  • でも前だけ回ると掴めない場合もあります.
    たとえばstrがabcaxyzefの場合、上のfor文ではsはxyzef、maxは6ですが、実際には最も長い文字列はbcaxyzefです.
    このような場合に発生する可能性のあるエラーを防止するために、ドアを逆転させるべきです.
    この回答は次のとおりです.
    const getLengthOfStr = str => {
    let max = 0;
      let cnt = 0;
      let s = ""
      for(let x of str){
        if(!s.includes(x)){
          cnt++;
          s += x;
          
        }else{
          cnt = 1;
          s =x 
        }
        if(max < cnt) max = cnt 
      }
    
      let reversedsStr = str.split('').reverse().join('');
        for(let x of reversedStr){
        if(!s.includes(x)){
          cnt++;
          s += x;
          
        }else{
          cnt = 1;
          s =x 
        }
        if(max < cnt) max = cnt 
      }
      return max
    }

    の最後の部分🍯


    例外の数を考えるのは容易ではない.
    仕方なく、、、、、^-^&**、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、