デイリーアルゴリズム: 有効な括弧

デイリーアルゴリズム: 有効な括弧

[[420388]]

'('、')'、'{'、'}'、'['、']' のみで構成される文字列が与えられた場合、その文字列が有効かどうかを判断します。

有効な文字列は次の要件を満たしている必要があります。

  • 開き括弧は、同じタイプの閉じ括弧で閉じる必要があります。
  • 開き括弧は正しい順序で閉じる必要があります。

空の文字列は有効な文字列とみなされることに注意してください。

例1:

  1. 入力: "()"  
  2. 出力: true  

例2:

  1. 入力: "()[]{}"  
  2. 出力: true  

例3:

  1. 入力: "(]"  
  2. 出力: false  

例4:

  1. 入力: "(]"  
  2. 出力: false  

例5:

  1. 入力: "([)]"  
  2. 出力: false  

答え: スタック構造を使用する

解決策: 文字列内の文字を 1 つずつスタックにプッシュし、文字を走査して 1 つずつ判断します。

  • まず要素が{、(、[であるかどうかを判断し、それを直接スタックにプッシュします。
  • それ以外の場合、文字は }、)、] のいずれかであり、文字列が有効であれば、要素はスタックの先頭と一致する必要があります。たとえば、スタックに ({) があり、次に走査される要素が ) である場合、現在の要素シーケンスは ({) であり、これは有効ではありません。したがって、スタックの先頭要素との一致は失敗し、文字列が無効であることを示す false が直接返されます。

トラバーサルが完了すると、一致した文字はすべて一致し、スタックからポップアウトされます。この時点でスタックが空であれば、文字列は有効です。スタックが空でない場合は、文字列に一致しない文字があり、文字列が無効であることを意味します。

理解を助けるために絵を描きます:

コード実装:

  1. const isValid =関数(s) {
  2. マップ = {
  3. '{' : '}'
  4. '(' : ')'
  5. '[' : ']'  
  6. }
  7. スタック = []
  8. ( i = 0 とします; i < s.length; i++) {
  9. if(map[s[i]]) {
  10. スタックをプッシュする(s[i])
  11. }そうでない場合、s[i] !== map[stack.pop()]){
  12. 戻る 間違い 
  13. }
  14. }
  15. スタックの長さを 0 で返す
  16. };

時間計算量: O(n)

空間計算量: O(n)

<<:  完璧な切り抜き王ビンビン! ByteDanceのインターンが開発したAIにより、4K 60fps動画のリアルタイム切り抜きが可能に

>>:  AI 主導の DevOps はどのようにビジネス変革を実現できるのでしょうか?

推薦する

音楽駆動型デジタルヒューマン技術の詳細な説明

1. ミュージックXRメーカーMusic XR Makerは、テンセントミュージック初のオーディオお...

2020 年の AI と機械学習の重要なトレンドは何ですか?

競争が激化するテクノロジー市場において、ハイテク新興企業から世界的な多国籍企業まで、誰もが人工知能を...

...

TensorFlow Lattice: 柔軟で制御可能、説明可能な機械学習

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

住宅建設はよりスマートになる

スマートホーム革命はここしばらく本格的に始まっています。住宅所有者はデータと IoT テクノロジーを...

自動運転におけるマルチモーダル融合認識アルゴリズムを説明する記事

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

テレンス・タオが新プロジェクトを立ち上げ:リーンで素数定理を証明、研究計画は完成

「アレックス・コントロヴィッチと私が率いる新しいリーン形式化プロジェクトが正式に発表されました。この...

...

AIやIoT技術を活用した企業が職場復帰する際に考慮すべきこと

新型コロナウイルス感染症のパンデミックにより、社会の多くの分野でデジタル変革が加速し、人工知能ツール...

拡散モデル画像理解力がSOTAをリフレッシュ! ByteDance Fudanチームが新たな「メタプロンプト」戦略を提案

テキストから画像への (T2I) 拡散モデルは、大規模な画像とテキストのペアで事前トレーニングされて...

Quark App、健康検索をアップグレードし、健康モデルアプリ「Quark Health Assistant」をリリース

12月25日、Quark Appは健康検索の全面的なアップグレードを発表し、健康大規模モデルアプリケ...

Facebook の MusicGen を使用してテキストを音楽に変換する方法

翻訳者 |ブガッティレビュー | Chonglou MusicGen を使用すると、誰でもテキスト ...

アルトマンがOpenAIに復帰、イリヤはどこへ行くのか、内部抗争の理由は信じられない

OpenAI シリーズは終わりに近づいていますが、イースターエッグがあるとは思っていませんでした。ま...

...