[编程题] 算法基础-字符移位

时间限制:1秒

空间限制:32768K

小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
你能帮帮小Q吗?

输入描述:

输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.

输出描述:

对于每组数据,输出移位后的字符串。

输入例子1:

AkleBiCeilD

输出例子1:

kleieilABCD
# 解法一:分别列出大小写,而后组合起来
import sys
def moveback(string):
    lowercase = []
    uppercase = []
    for s in string:
        if s.islower():
            lowercase.append(s)
        if s.isupper():
            uppercase.append(s)
    lowercase.extend(uppercase)
    return ''.join(lowercase)        # 将list转换成string
for line in sys.stdin:
    s1 = line.strip()
    print(moveback(s1))
# 一个一个挪
import sys
try:
    while True:
        line = sys.stdin.readline().strip()
        if line == '':
            break
        else:
            str1 = list(line)
            for i in range(len(str1)-1):
                for j in range(len(str1)-1):
                    if str1[j].isupper() == True and str1[j+1].islower() == True:
                        str1[j],str1[j+1] = str1[j+1],str1[j]
            result=''.join(str1).strip()
            sys.stdout.write(str(result) + '\n')
except:
    pass
# 对字符元素循环,将大写加到字符串后,对字符串重新截断
import sys
try:
    while True:
        string = sys.stdin.readline().strip()
        if s == '':
            break
        for s in string:
            if s.isupper():
                string += s
                string = string[:string.index(s)]+string[string.index(s)+1:]
        print(string)
except:
    pass
# 字符替换

import sys
import re  

for line in sys.stdin:
    s1 = line.strip()
    print(re.sub(r'[A-Z]','',s1) + re.sub(r'[a-z]','',s1))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值