时间限制: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))