Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで2つの異なる要素を持つ最長の部分文字列の長さを見つけるプログラム


文字列sがあるとすると、最大2つの異なる文字を含む最長の部分文字列の長さを見つける必要があります。

したがって、入力がs ="xyzzy"のような場合、出力は4になります。これは、 "yzzy"が、最大2文字の一意の文字を含む最長のサブストリングであるためです。

これを解決するために、次の手順に従います-

  • start:=0

  • c:=地図

  • ans:=0

  • 0からsのサイズまでの範囲で終了する場合は、実行してください

    • c [s [end]]:=c [s [end]] + 1

    • サイズがc>2の場合、実行

      • c [s [start]]:=c [s [start]]-1


      • c [s [start]]が0の場合、

        • c [s [start]]

          を削除します
      • start:=start + 1

    • ans:=ansの最大値と(end-start + 1)

  • ansを返す

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, s):
      from collections import Counter
      start = 0
      c = Counter()
      ans = 0
      for end in range(len(s)):
         c[s[end]] += 1
         while len(c) > 2:
            c[s[start]] -= 1
            if not c[s[start]]:
               del c[s[start]]
            start += 1
         ans = max(ans, end - start + 1)
      return ans
ob = Solution()
s = "xyzzy"
print(ob.solve(s))

入力

s = "xyzzy"

出力

4

  1. Pythonの二分木で2つの要素に共通する祖先を見つけるプログラム

    二分木があり、2つの数値aとbもあるとすると、aとbを子孫として持つ最下位ノードの値を見つける必要があります。ノードはそれ自体の子孫になる可能性があることに注意する必要があります。 したがって、入力が次のような場合 a =6、b =2の場合、出力は4になります。 これを解決するには、次の手順に従います- メソッドsolve()を定義します。これはルートを取り、a、b ルートがnullの場合、 -1を返す ルートの値がaまたはbの場合、 ルートの戻り値 左:=solve(ルートの左、a、b) right:=resolve(right

  2. いいえが2の累乗であるかどうかを調べるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 数nが与えられた場合、与えられた数が2の累乗であるかどうかを確認する必要があります。 アプローチ 入力数を2で割り続けます。つまり、=n/2を繰り返します。 各反復で、n%2がゼロ以外になり、nが1でない場合、nは2の累乗ではないことを確認します。 nが1になると、2の累乗になります。 以下の実装を見てみましょう- 例 def isPowerOfTwo(n):    if (n == 0):       retur