括号匹配根据题解思路是这样的,大致分三种情况: (1)根据每个输入一次统计,如果字符串本身就是符合的,也就是最后S为empty,则com自增,最后com*com即为本身就符合的字符串拼接的所有可能情况,比如说:A、B两个串符合,最后情况就有,AA、AB、BA、BB中情况; (2)对于像(()(这样的情况,中间的括号在运行过程中从栈中退出来,最后栈中只剩((,将这种情况通过map保存,l[ln]++,其中ln代表此时的左括号个数;对于后括号也是类似,存入r[rn]中;将所有输入的字符串的情况统计出来;最后将对应的l[1]r[1],r[2]r[2]...算出来依次相加;还是举个例子,比如说给定的字符串中,左括号为2的有:(()(,只有1种情况,而右括号为2的有:))、())),则最后能拼成的就有1*2中情况; (3)对于像)(这样的字符串,它既不是自身就符合括号匹配的串,也不是最后经过处理之后只剩一种括号的串,这种串没法和其他串拼接出符合要求的串,所以不统计;
点赞 1

相关推荐

点赞 评论 收藏
分享
牛客网
牛客企业服务