Skip to content

44 翻转单词顺序列

题目描述

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,"student. a am I"。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是"I am a student."。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

示例

输入: "student. a am I"
输出: "I am a student."

解题思路

核心思想:分割字符串,翻转列表,再拼接。

关键步骤

  1. 按空格分割字符串
  2. 翻转单词列表
  3. 用空格拼接

时间复杂度: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"
最近更新

基于 MIT 许可发布