Pythonでさまざまな角かっこがバランスが取れていて整形式であるかどうかを確認するプログラム
一連の角かっこ(丸かっこ、中かっこ、四角)があるとすると、角かっこがバランスが取れている(整形式)かどうかを確認する必要があります。
したがって、入力がs ="([()()] {[]})()"の場合、出力はTrueになります
これを解決するには、次の手順に従います-
- スタック:=新しいリスト
- d:=キーと値のペアを持つハッシュマップ('}'、'{')、(')'、'(')、(']'、'[')
- sの各文字cについて、
- cが'}])'のいずれかである場合、
- スタックが空であるか、スタックの最上位がd [c]と同じでない場合、
- Falseを返す
- スタックからポップ
- スタックが空であるか、スタックの最上位がd [c]と同じでない場合、
- それ以外の場合、
- cをスタックにプッシュします
- cが'}])'のいずれかである場合、
- スタックが空の場合はtrueを返し、それ以外の場合はfalseを返します
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, s): stack = [] d = {'}': '{',')': '(',']': '['} for c in s: if c in '}])': if not stack or stack[-1] != d[c]: return False stack.pop() else: stack.append(c) return not stack ob = Solution() print(ob.solve("([()()]{[]})()"))
入力
"([()()]{[]})()"
出力
True
-
Pythonで葉のシーケンスが2つの葉と同じであるかどうかを確認するプログラム
2つの二分木があるとします。両方の木の左から右への葉の順序が同じであるかどうかを確認する必要があります。 したがって、入力が次のような場合 両方のツリーのシーケンスが[2、6]であるため、出力はTrueになります。 これを解決するには、次の手順に従います。 c:=新しいリスト 関数inorder()を定義します。これが定着し、c cがnullの場合、 c:=新しいリスト rootがnullでない場合、 順序(ルートの左側、c) ルートの左側がnullで、ルートの右側がnullの場合、 cの最後にrootの値を挿入 順序(ルートの権利、c) return c
-
与えられたグラフが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()を定義します。これはソースを取ります