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

Pythonで有効な最長の括弧


開き括弧と閉じ括弧が付いた文字列があるとします。有効な(整形式の)括弧の最長の長さを見つける必要があります。したがって、入力が「))(())())」の場合、有効な文字列は「(())()」であるため、結果は6になります。

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

  • スタックを作成し、-1を挿入し、ans:=0

    を設定します。
  • 0からスタックの長さまでの範囲のiの場合– 1

    • s [i]が開き括弧の場合は、iをスタックに挿入します

    • それ以外の場合

      • スタックが空でなく、スタックの最上位が-1でなく、s [stack top]が開き括弧である場合、

        • スタックの最上位要素

        • ans:=ansとiの最大値–スタックトップ

      • それ以外の場合は、iをスタックに挿入します

  • ansを返す

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

class Solution(object):
   def longestValidParentheses(self, s):
      stack = [-1]
      ans = 0
      for i in range(len(s)):
         if s[i] == "(":
            stack.append(i)
         else:
            if stack and stack[-1]!=-1 and s[stack[-1]] == "(":
               stack.pop()
               ans = max(ans,i - stack[-1])
            else:
            stack.append(i)
      return ans
ob = Solution()
print(ob.longestValidParentheses("))(())())"))

入力

"))(())())"

出力

6

  1. Pythonで有効なアナグラム

    アナグラムは基本的に、特定の文字列またはパターンのすべての順列です。このパターン検索アルゴリズムは少し異なります。この場合、正確なパターンが検索されるだけでなく、テキスト内の指定されたパターンのすべての可能な配置が検索されます。したがって、入力が「ANAGRAM」と「NAAGARM」の場合、それらはアナグラムですが、「cat」と「fat」はアナグラムではありません これを解決するために、文字列を文字のリストに変換してから並べ替えます。並べ替えられた2つのリストが同じ場合は、アナグラムです。 例(Python) 理解を深めるために、次の実装を見てみましょう- class Solution(o

  2. Pythonで有効な回文

    英数字の値と記号を含む文字列があるとします。小文字と大文字もあります。文字列が回文を形成しているかどうかは、小文字(大文字は小文字に変換されます)、コンマ、スペースなどの他の記号のみを考慮して確認する必要があります。 文字列が「男、計画、運河:パナマ」のようなものであるとすると、これらのルールを考慮すると、「アマナプラナカナルパナマ」になります。これは回文です。 これを解決するには、次の手順に従います- define x =“” str −の各文字cを読み取ります cが小文字または数字の場合は、cをxに追加します それ以外の場合、cは大文字で、小文字に変換してxの後に追加します