本帖最后由 jackz007 于 2025-2-27 16:39 编辑
参考这段代码:s = input("请输入一个字符串:")
res = []
for each in s:
if res and res[-1].lower() == each.lower() and res[-1] != each:
res.pop()
else:
res . append(each)
下面通过举例进行讲解。
假如,你键入的是 "XABCcbaZ",s 有 8 个字符,这个循环将会循环 8 次,头 4 次循环由于 if 条件为 False,所以,执行 res . append(each) 指令的结果,使 s[0] - s[3] 依次进入 res,到第 5 次循环开始的时候,res = ['X' , 'A' , 'B' , 'C'],res[-1] = 'C',each = s[4] = 'c',、二者显然存在同一个字母的大小写关系,就是说,if 的条件为 True,于是,执行 res . pop(),第 5 次循环结束;第 6 次循环开始的时候,res = ['X' , 'A' , 'B'],res[-1] = 'B' ,each = s[5] = 'b',if 条件为 True,继续执行 res . pop(),第 6 次循环结束;第 7 次循环开始的时候,res = ['X' , 'A'],res[-1] = 'A' ,each = s[6] = 'a',if 条件为 True,继续执行 res . pop(),第 7 次循环结束;第 8 次循环开始的时候,res = ['X'],res[-1] = 'X',each = s[7] = 'Z',if 条件为 False,执行 res . append(each),第 8 次循环结束,最后,res = ['X' , 'Z']。
要实现题目要求的功能,使用列表代码最为简洁,当然,不使用列表也是完全可以的,下面的代码就没有用到列表s , k = input("请输入一个字符串:") , 1
while k < len(s) :
if s[k] == s[k - 1] . swapcase() :
s = s[: k - 1] + s[k + 1 :] # 剔除 s[k - 1 : k + 1],重新合成 s
if k > 1 : # 如果指针不在字符串开头
k -= 1 # 指针回退 1 个字符,以便下一次循环可以检查拼接处两个字符构成的新组合
else :
k += 1
print(s)
运行实况:D:\[exercise]\Python>python x.py
请输入一个字符串:XABCcbaZ
XZ
D:\[exercise]\Python>
|