我有一个问题,我必须使用递归编写算法(不能使用循环).
问题是我的函数应检查给定的字符串是否为"Balanced".
该字符串仅包含字母(无符号)和仅(" [ "," ] ")括号.
(例如:" [aa] [abbsa] ").
假设每个"开括号"(" [ ")都有一个结束符(" ] "),换句话说,字符串中的括号是平衡的,不需要检查它.
字符串始终是以下两种格式之一:
它只包含没有括号的字符.(例如:"aaabbcc").
[ 左 ] [ 右 ]
左:本身是一个子字符串,实际上可以是两种格式(简单字符串或带有2个子字符串的字符串)
右:本身是一个子字符串,实际上可以使用两种格式(简单字符串或带有2个子字符串的字符串)
编辑:字符串是有效的,没有必要检查它是否合法.它总是提到的格式和示例之一(也可能更复杂,但它总是合法的).
编辑:字符串只能是第一种格式,或第二种格式.如果它是第二种格式,那么它包括第一种格式,它必须以"["开头并以"]"结尾.
示例:"aaabbbb"(第1格式)."[aa] [bbbb]"(第2格式)."[[aa] [b]] [[[a] [bbb]] [aaaa]]"(第2格式).
如果字符串满足以下至少一个条件,则该字符串为Balanced:
该字符串来自第一格式.
字符串来自第二个格式,左侧的字符数(没有括号)(称为称重)是偶数,右侧的权重也是如此.
字符串来自第二格式,LEFT侧的权重也是ODD,右侧的权重也是.
例子:
字符串" [abcde] [xyz] "是Balanced,因为Right weight和Left weight都是ODD.
字符串" [abcde] [xyzw] "未平衡,因为右权重是偶数(4是偶数)而左权重是奇数(5是奇数).
字符串" [abcdef] [[x] [yzw]] "是平衡的.
左权重为6.
子字符串" [x] [yzw] "是平衡的.(左权重为1,右权重为3(均为ODD)).
" [x] [yzw] " 的权重是4.因此," [abcdef] [[x] [yzw]] "是平衡的,因为左右权重都是偶数.
" [[abcde] [xyzw]] …