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

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

[[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 はどのようにビジネス変革を実現できるのでしょうか?

ブログ    
ブログ    

推薦する

李開復:将来、名ばかりの職業10種

[[244632]]今後 30 年間で、人工知能は、現在人間が理解していない多くの社会現象を引き起こ...

...

AIエンジニアの成長ストーリー~働き方編~

[[409282]]この記事では、特に仕事の方法について取り上げます。エンジニアの中には非常に頭の...

2019 年の AI 統計と重要な事実

[[280183]] [51CTO.com クイック翻訳] 人工知能(AI)は日々驚異的なスピードで...

...

人工知能と教育の統合が高等教育改革を促進

[[434341]]我が国の長期的な発展と人材戦略により、質の高い人材に対する需要が急速に高まってい...

行列乗算の3Dインサイト: これがAIの思考法

行列乗算の実行プロセスを 3D で表示できれば、行列乗算を学ぶのはそれほど難しくないでしょう。今日で...

ネットワークケーブルに沿って登ることが現実になりました。Audio2Photorealは、対話を通じてリアルな表情や動きを生成できます

携帯電話の冷たい画面を通して友達とチャットするときは、相手の口調を推測する必要があります。彼/彼女が...

2024年のAIに関する5つの予測

2023 年には、AI、ML、特に GenAI があらゆるところに存在しますが、内容よりもパフォーマ...

たった 10 行のコードでディープラーニングを実行できますか? PaddlePaddleフレームワークの高レベルAPIでAIを簡単に操作しよう

高レベルAPIとはディープラーニングは、人工知能時代の中核技術として、近年、学術界と産業界の両方でま...

2020年のIEEEフェローリストが発表:約30%が中国人で、葉潔平、張同、周博文、熊慧などのAI専門家が選出

本日、IEEE 2020フェローのリストが発表されました。統計によると、280人以上が選出され、その...

人工知能の過去と現在を1つの記事で理解する(おすすめコレクション)

はじめに:人工知能の開発プロセスは、多くの紆余曲折を伴う、3 つの上昇と 2 つの下降として説明でき...

...