对于的数据,,保证输入的字符串是括号匹配的,并且保证中包含的匹配括号对数量不大于1;
对于另外的的数据,,保证输入的字符串是括号匹配的,无其它保证;
对于另外的的数据,,保证输入的字符串是括号匹配的,无其它保证。
strlen for 中算,爆零两行泪
提示
括号匹配问题指的是,给定一个括号匹配串,要求输出所有配对的左右圆括号对的下标(从0开始,每行两个数)。其中,串被称作括号匹配串,当且仅当:
- ,其中字符串中不包含左右括号;或者
- ,其中是括号匹配串,此时最左和最右的括号匹配;或者
- ,其中均为括号匹配串。
我们来简单分析下这个问题:看起来括号匹配串是一个递归定义,但我们可以线性地求解它。对于一个括号匹配串,为了方便,我们假设它只包含左右圆括号的字母。从左到右看它的每一个字母,我们发现每个右括号一定匹配在它左边最近的还未被匹配的左括号。
例如:对于串 ,当我们看到下标为2的右括号时,其左边最近的还未被匹配的左括号下标为1;当我们看到下标为4的右括号时,其左边最近的还未被匹配的左括号下标为3;当我们看到下标为5的右括号时,其左边最近的还未被匹配的左括号下标为0(因为1,3已经被匹配);
从左到右扫描,后被看到的左括号先被右括号匹配,所以这是一个后进先出的结构。