我们寻找偶数个匹配的大括号,但没有考虑数组中的位置。像这样:
def brace_count(brace_array)
# ["{}[]()", "{}[]()"]
brace_array.each do |braces|
brace_chars_array = braces.split('')
# ["{", "}", "[", "]", "(", ")"]
paren_count = 0
brace_count = 0
bracket_count = 0
brace_chars_array.each do |char|
if char == "[" || char == "]"
bracket_count += 1
elsif char == "{" || char == "}"
brace_count += 1
elsif char == "(" || char == ")"
paren_count += 1
end
# brace_count = 2, paren_count = 2, bracket_count = 2
if brace_count % 2 == 0 && paren_count % 2 == 0 && bracket_count % 2 == 0
puts 1
else
puts 0
end
end
end
有谁知道如何解决这个问题?我们无法弄清楚如何递归调用它。我认为正则表达式不是正确的方法。1
如果大括号匹配,它应该返回,但0
如果它们不匹配,并且如果在两个匹配的大括号之间有不同类型的大括号,则测试应该大量输出0
。
例子:
{{[]}} = 1
{([[)]]} = 0 (Even though the brackets are all even numbers [1 open 1 close, just not ordered properly])