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

与えられたプッシュポップシーケンスがPythonで適切かどうかをチェックするプログラム


プッシュと呼ばれる番号のリストとポップと呼ばれる番号の別のリストがあるとすると、これがスタックプッシュとポップアクションの有効なシーケンスであるかどうかを確認する必要があります。

したがって、入力がpushs =[1、2、5、7、9] pops =[2、1、9、7、5]のようである場合、[1、2]をプッシュできるため、出力はTrueになります。まず、両方をポップします。次に、[5、7、9]を押して、すべてポップします。

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

  • s:=新しいスタック
  • i:=0
  • プッシュの各要素について、
    • eleをsにプッシュ
    • s>0およびpops[i]のサイズはsの同じ最上位要素ですが、
      • sから最上位の要素を削除する
      • i:=i + 1
  • sのサイズが0の場合はtrueを返し、それ以外の場合はfalseを返します

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

class Solution:
   def solve(self, pushes, pops):
      s = []
      i = 0

      for ele in pushes:
         s.append(ele)

         while len(s) > 0 and pops[i] == s[-1]:
            s.pop()
            i += 1

      return len(s) == 0

ob = Solution()
pushes = [1, 2, 5, 7, 9]
pops = [2, 1, 9, 7, 5]
print(ob.solve(pushes, pops))

入力

[1, 2, 5, 7, 9], [2, 1, 9, 7, 5]

出力

True

  1. 与えられたグラフがPythonで2部グラフであるかどうかをチェックするプログラム

    無向グラフが1つあるとすると、グラフが2部グラフであるかどうかを確認する必要があります。グラフのすべてのエッジ{u、v}がAに1つのノードuを持ち、Bに別のノードvを持つように、グラフのノードを2つのセットAとBに分割できる場合、グラフは2部グラフであることがわかります。 したがって、入力が次のような場合 次に、出力はTrueになり、[0,4]はセットAにあり、[1,2,3]はセットBにあり、すべてのエッジはAからAまたはBからBではなく、AからBまたはBからAになります。 。 これを解決するために、次の手順に従います- 関数dfs()を定義します。これはソースを取ります

  2. 指定された文字列がキーワードであるかどうかを確認するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数値が与えられているので、その数値が2の累乗であるかどうかを確認する必要があります。 キーワードは、特定の用途で任意の言語によって予約されている特別な単語であり、識別子として使用することはできません。 指定された文字列がキーワードであるかどうかを確認するために、以下で説明するようにキーワードモジュールを使用しました。 例 # keyword module import keyword # Function def isKeyword(word) :    # list of all