|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请按照以下规则整理一个给定的字符串 s。
一个整理好的字符串中,两个相邻字符 s[j] 和 s[j+1],其中 0 <= j <= s.length - 2,要满足如下条件:G>j)"I
若 s[j] 是小写字符,则 s[j+1] 不可以是相同的大写字符
若 s[j] 是大写字符,则 s[j+1] 不可以是相同的小写字符
如果 s[j] 和 s[j+1] 满足以上两个条件,则将它们一并删除
举例:
整理前:"FishCcCode"
整理后:"FishCcCode" -> "FishCode")
整理前:"AbBaACc"Powered
整理后:"AbBaACc" -> "AaACc" -> "AaA" -> "A"
整理前:"AABaAbCc"
整理后:"AABaAbCc" -> "AABbCc" -> "AACc" -> "AA"
请按要求整理好字符串,并将结果打印到屏幕上。
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)
for each in res:
print(each, end='')
解析:这里比较难理解的应该是判断部分,它是先判断列表是否为空;如果不为空,则将列表中最后一个元素(即上一轮迭代放进去的字符)拿出来比对,大家都转换成小写,如果一样,那么说明它是同一个字母(此时可能是一个大写一个小写,两个都是大写,或者两个都是小写 3 种可能性);((((最后判断如果两者不相同,则说明是同一个字母的大小写。))))为什么如果两者不相同,则说明是一个字母的大小写??????? |
|