当前位置: 首页 > 面试经验 >

【华为OD机试2023】单词倒序(Python)

优质
小牛编辑
132浏览
2023-03-28

【华为OD机试2023】单词倒序(Python)

题目描述:

输入单行英文句子,里面包含英文字母,空格以及,.? 三种标点符号,请将句子内每个单词进行倒序,并输出倒序后的语句

输入描述:

输入字符串S,S的长度1≤N≤100

输出描述:

输出逆序后的字符串

补充说明:

标点符号左右的空格≥0,单词间空格>0

示例1

输入:

yM eman si boB.

输出:

My name is Bob.

示例2

输入:

woh era uoy ? I ma enif.

输出:

how are you ? I am fine.

解题思路:

遍历字符串,如果遇到非字母value,且单词列表x为空,说明value前没有字母,直接添加至字符串列表y

如果遇到非字母value,且单词列表x不为空,说明value前有一个单词,此时需要将单词列表x逆序,并转为字符串后添加到y中,然后别忘了把value也添加进y,并初始化单词列表x

如果遇到字母value,则将其添加进列表x

需要注意的是,如果该value是字符串中最后一个字符,且其为字母,那么将会没有下一个非字母value用于将单词列表x逆序添加进y,需要对该情况单独处理


st=input()
#存储一个单词,便于倒序
x=[]
#存储整个字符串,用于拼接
y=[]
for i,value in enumerate(st):
if not value.isalpha():
if not x:
y.append(value)
else:
y.append(''.join(x[::-1]))
y.append(value)
x=[]
else:
x.append(value)
if i==len(st)-1:
y.append(''.join(x[::-1]))
print(''.join(y))

 类似资料: