字符串排序
题目描述
编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出: aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y
注意有多组测试数据,即输入有多行,每一行单独处理(换行符隔开的表示不同行)输入描述:
输入字符串
输出描述:
输出字符串
示例1
输入
A Famous Saying: Much Ado About Nothing (2012/8).
输出
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
解法1
while True:
try:
s = input()
res,chars = [False]*len(s),[]
for i,v in enumerate(s):
if v.isalpha():
chars.append(v)
else:
res[i] = v
chars.sort(key=lambda c:c.lower())
for i,v in enumerate(res):
if not v:
res[i] = chars[0]
chars.pop(0)
print("".join(res))
except:
break
解法2
while True:
try:
s = input()
res,chars = [False]*len(s),""
for i,v in enumerate(s):
if v.isalpha():
chars+=v
else:
res[i] = v
chars = sorted(chars, key=lambda c:c.lower())
for i,v in enumerate(res):
if not v:
res[i] = chars[0]
chars.pop(0)
print("".join(res))
except:
break
【中级】单词倒排
题目描述
对字符串中的所有单词进行倒排。
说明:
1、构成单词的字符只有26个大写或小写英文字母;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;
输入描述:
输入一行以空格来分隔的句子
输出描述:
输出句子的逆序
示例1
输入I am a student
输出
student a am I
拿到题自己以为很简单(实际也不难^_^),自己的解法如下: