给定一个字符串,删除字符串中所有的b和ac组合, 要求:字符串只遍历一次,且不能使用额外的空间

string = 'aaascsscc'
ls = list(string)
def isA(ls):
    i = 0
    while i < len(ls):
        if ls[i] == 'b':
           ls.pop(i)
           if i >= 1:
               i=i-1
        else:
            ###
            if i < len(ls)-1:##操作后面的数   减一是为了防止越界  因为后面有i+1
               if (ls[i] == 'a' and ls[i+1] == 'c'):
                   ls.pop(i)#删除一个之后,列表后面的元素就往前填充了
                   ls.pop(i)#所以还是删除坐标为i的值
                   if i >= 1:#删除完之后吧坐标后退一个,因为可能有aacc这样的  在删除中间ac之后需要回退一个下标,继续操作
                       i=i-1
                   continue##然后执行下次循环
        i+=1
isA(ls)
string = ''.join(ls)
print(string)

  

猜你喜欢

转载自www.cnblogs.com/wts-home/p/10023657.html