给定一个包含某个顺序的不平衡括号的字符串,如何找到第一个索引作为我的字符串的不平衡因子并返回它?
例如:如果字符串是:")"返回值为0, 如果字符串是:"(((jjkk))))"返回值为10, 如果字符串是:"(("返回值将是2,
我已经实现了一个返回布尔值的函数,关于我的字符串是否平衡。 (T - 平衡) 我知道它应该是一些递归函数,但只是无法弄清楚... 谢谢!
答案 0 :(得分:0)
一种非递归解决方案(用类似于C#的伪体内容编写)......
string input_str = "this(is(for)(testing))(the)correctness)(of(brackets))";
int left_brackets_cnt = 0;
for (int i=1; i<=input_str.length; i++)
{
switch (input_str.char_at_position(i))
{
case "(": left_brackets_cnt++;
case ")": left_brackets_cnt--;
}
if (left_brackets_cnt < 0)
throw exception("Unmatched right bracket at position "+i);
}
if (left_brackets_cnt > 0)
throw exception("Too many left brackets");
脚注:请表示赞赏 - 我在3&#34;手机! : - )