找到第一个使字符串中的括号失去平衡的索引

时间:2014-12-08 11:23:27

标签: python-3.x

给定一个包含某个顺序的不平衡括号的字符串,如何找到第一个索引作为我的字符串的不平衡因子并返回它?

例如:如果字符串是:")"返回值为0,              如果字符串是:"(((jjkk))))"返回值为10,              如果字符串是:"(("返回值将是2,

我已经实现了一个返回布尔值的函数,关于我的字符串是否平衡。 (T - 平衡) 我知道它应该是一些递归函数,但只是无法弄清楚... 谢谢!

1 个答案:

答案 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;手机! : - )