アプリ版:「スタンプのみでお礼する」機能のリリースについて

丸括弧、波括弧、角括弧から構成される文字列について、
各括弧が正しい入れ子関係になっているかどうかを
判定するプログラムを作ってください。
<正しい入れ子関係の例>
[]
[]{}
[()]{}
([()]{})

<誤った入れ子関係の例>
(]) ... 開いていない角括弧を閉じている
[]( ... 開いた丸括弧を閉じていない
([)] ... 開いた角括弧を閉じる前に丸括弧を閉じている


ruby初心者なのでどこがどうなってるかの解説などの説明なども頂けると助かります。。。

A 回答 (1件)

s = "([)]"



stack = []
err = false

s.each_char do |c|
case c
when '('
stack.push ')'
when '['
stack.push ']'
when '{'
stack.push '}'
when ')',']','}'
if stack.size == 0 || stack[-1] != c
err = true
break
else
stack.pop
end
else
puts "対象括弧以外の文字です"
err = true
break
end
end

if !err && stack.size == 0
puts "正しいです"
else
puts "正しくないです"
end
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!