机考

重排字符串 去除除大小写字母,数字 ,以及‘-’以外的字符,倒序输出,其中只有‘-’两端连接有字母或数字时,可看作连词符,否则也要去掉。
示例:
输入: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值