|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请按照以下规则整理一个给定的字符串
一个整理好的字符串中,两个相邻字符 s[j] 和 s[j+1],其中 0 <= j <= s.length - 2,要满足如下条件:
若 s[j] 是小写字符,则 s[j+1] 不可以是相同的大写字符
若 s[j] 是大写字符,则 s[j+1] 不可以是相同的小写字符
如果 s[j] 和 s[j+1] 满足以上两个条件,则将它们一并删除
S=input("请输入字符串:")
a=[]
b=[]
stri=[]
for p in S:
stri.append(p)
d=len(stri)
while True:
for i in range(d-1): #找出符合条件的索引放入a
if stri[i].swapcase()==stri[i+1]:
a.append(i)
a.append(i+1)
if a==[]: #防止a中出现三个连续的数
break
for j in range(len(a)-1):
if a[j]==a[j+1]:
b.append(j)
b.reverse()
for k in b:
a.pop(k)
a.reverse() #翻转a逆向删除
for o in a:
stri.pop(o)
d=len(stri)
for u in stri:
print(u,end="")
报错pop的参数超出了列表的范围,求纠错
本帖最后由 jackz007 于 2022-9-21 19:40 编辑
- S = input("请输入字符串:")
- i , T = 0 , ''
- while i < len(S) - 1:
- if S[i] != S[i + 1] and S[i] . lower() == S[i + 1] . lower():
- i += 1
- else:
- T = T + S[i]
- i += 1
- if i == len(S) - 1:
- T = T + S[i]
- print(T)
复制代码
运行实况:
- D:\[00.Exerciese.2022]\Python>python x.py
- 请输入字符串:ABBCCDDEEFFGG
- ABBCCDDEEFFGG
- D:\[00.Exerciese.2022]\Python>python x.py
- 请输入字符串:ABbcCDdeE
- A
- D:\[00.Exerciese.2022]\Python>python x.py
- 请输入字符串:ABbcCDdeEF
- AF
- D:\[00.Exerciese.2022]\Python>
复制代码
用列表的版本
- S = input("请输入字符串:")
- a , i = [] , 0
- while i < len(S) - 1:
- if S[i] != S[i + 1] and S[i] . lower() == S[i + 1] . lower():
- i += 1
- else:
- a . append(S[i])
- i += 1
- if i == len(S) - 1:
- a . append(S[i])
- print('' . join(a))
复制代码
|
|