小编Buk*_*Lau的帖子

递归函数检查字符串是否为"平衡"

我有一个问题,我必须使用递归编写算法(不能使用循环).
问题是我的函数应检查给定的字符串是否为"Balanced".
该字符串仅包含字母(无符号)和仅(" [ "," ] ")括号.
(例如:" [aa] [abbsa] ").

假设每个"开括号"(" [ ")都有一个结束符(" ] "),换句话说,字符串中的括号是平衡的,不需要检查它.
字符串始终是以下两种格式之一:

  1. 简单字符串:字符.

它只包含没有括号的字符.(例如:"aaabbcc").

  1. 包含2个子字符串的字符串:

[ 左 ] [ 右 ]

左:本身是一个子字符串,实际上可以是两种格式(简单字符串或带有2个子字符串的字符串)

右:本身是一个子字符串,实际上可以使用两种格式(简单字符串或带有2个子字符串的字符串)

编辑:字符串是有效的,没有必要检查它是否合法.它总是提到的格式和示例之一(也可能更复杂,但它总是合法的).

编辑:字符串只能是第一种格式,或第二种格式.如果它是第二种格式,那么它包括第一种格式,它必须以"["开头并以"]"结尾.
示例:"aaabbbb"(第1格式)."[aa] [bbbb]"(第2格式)."[[aa] [b]] [[[a] [bbb]] [aaaa]]"(第2格式).

如果字符串满足以下至少一个条件,则该字符串为Balanced:

  1. 该字符串来自第一格式.

  2. 字符串来自第二个格式,左侧的字符数(没有括号)(称为称重)是偶数,右侧的权重也是如此.

  3. 字符串来自第二格式,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]] …

c string algorithm recursion function

5
推荐指数
1
解决办法
1349
查看次数

标签 统计

algorithm ×1

c ×1

function ×1

recursion ×1

string ×1