重排字符串 去除除大小写字母,数字 ,以及‘-’以外的字符,倒序输出,其中只有‘-’两端连接有字母或数字时,可看作连词符,否则也要去掉。
示例:
输入:cow-baby @ -and- fishbaby
输出:fishbaby and cow-baby
def opera(s):
ans = []
stack = []
for i in range(len(s)):
if 'a' <= s[i] <= 'z' or 'A' <= s[i] <= 'Z' or '0' <= s[i] <= '9':
stack.append(s[i])
elif s[i] == '-':
if 0 < i < len(s) - 1:
if ('a' <= s[i - 1] <= 'z' or 'A' <= s[i - 1] <= 'Z' or '0' <= s[i - 1] <= '9') and ('a' <= s[i + 1] <= 'z' or 'A' <= s[i + 1] <= 'Z' or '0' <= s[i + 1] <= '9'):
stack.append(s[i])
else:
if stack:
temp = ''.join(stack)
ans.append(temp)
stack = []
else:
if stack:
temp = ''.join(stack)
ans.append(temp)
stack = []
else:
if stack:
temp = ''.join(stack)
ans.append(temp)
stack = []
temp = ''.join(stack)
ans.append(temp)
return ans
while True:
try:
s = input()
ans = opera(s)
for i in range(len(ans) - 1,-1,-1):
print(ans[i],end = ' ')
except:
break