这个题我是这么做的: 根据题意,可以发现字符串里开头出现的b(在第一个a出现前出现的b)与结尾出现的a(最后一个b出现后出现的a)是不可能被化简的。所以所有的字符串都可以被分为三部分:前置b,中间部分(以a开头以b结尾的若干字符),后置a。而中间部分一定可以被最终化简为b。所以我们可以用while从字符串开头遍历寻找第一个不是字符b的位置(计为headB),从结尾逆序遍历第一个不是字符a的位置(计为tailA)。 之后分情况讨论: if headB = 字符串长度 - tailA: 说明整个字符串仅由前置b与后置a组成,不可化简,就直接将这个字符串输出。 else: 答案为:先append所有前置b,再append一个b,最后append所有后置a,然后输出。 ac了所有用例,但是也没有严格的数学证明,如果有错误还请大佬们指正~
1 2
牛客网
牛客企业服务