[Swift]Baekjun 9012-かっこ

1525 ワード


質問リンク
「(」と「)」のペアが存在します.
(「」の場合はcount変数+1、「」の場合はcount変数-1.
最終的にcountの値が0の場合、YESが出力されます.
ただし、countの値は0(たとえば「()」ですが、カッコのペアではない場合があります.
このような状況を排除するために,")"のcount-1の後,countが0未満の場合はbreakを用い,最後まで行わずにNOを直接出力する.

import Foundation

 let testCase = Int(readLine()!)!

 for _ in 0..<testCase {

     let line = readLine()!
     var count = 0

     for char in line {
         if char == "(" {
             count += 1
         } else if char == ")" {
             count -= 1
             if count < 0 {
                 break
             }
         }
     }

     if count == 0 {
         print("YES")
     } else {
         print("NO")
     }

}
  • しかし、このプールは16ミリ秒の時間を必要とするが、出力方法を以下に示すように変更するだけで、時間は12ミリ秒に大幅に減少し、
  • になる.
    
    import Foundation
    
    let testCase = Int(readLine()!)!
    
    for _ in 0..<testCase {
    
        let line = readLine()!
        var count = 0
    
    
        for char in line {
            if char == "(" {
                count += 1
            } else if char == ")" {
                count -= 1
                if count < 0 {
                    break
                }
            }
        }
    
        print(count == 0 ? "YES" : "NO")
    }
    
    追加のアルゴリズム分類レポートによると、スタックで実現するのも悪くない...!
    print(条件?もし本当なら:偽物なら)これは必ず覚えておいてください