44 翻转单词顺序列
题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,"student. a am I"。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是"I am a student."。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
示例:
输入: "student. a am I"
输出: "I am a student."解题思路
核心思想:分割字符串,翻转列表,再拼接。
关键步骤:
- 按空格分割字符串
- 翻转单词列表
- 用空格拼接
时间复杂度:O(n) 空间复杂度:O(n)
Python 实现
python
def reverse_sentence(s):
"""
翻转单词顺序
Args:
s: 句子
Returns:
str: 翻转后的句子
"""
if not s:
return ""
words = s.split()
return ' '.join(reversed(words))
# 测试代码
if __name__ == "__main__":
test_cases = [
"student. a am I",
"I am a student.",
"",
" hello world ",
]
for s in test_cases:
print(f"'{s}' → '{reverse_sentence(s)}'")
# 输出:
# 'student. a am I' → 'I am a student.'
# 'I am a student.' → 'student. a am I'
# '' → ''
# ' hello world ' → 'world hello'图解
示例: "student. a am I"
步骤1: 分割
["student.", "a", "am", "I"]
步骤2: 翻转
["I", "am", "a", "student."]
步骤3: 拼接
"I am a student."
---
示例: " hello world "
split()会自动处理多个空格
["hello", "world"]
翻转后: ["world", "hello"]
拼接: "world hello"