📜  门| GATE-CS-2003 |第 47 题(1)

📅  最后修改于: 2023-12-03 14:58:25.237000             🧑  作者: Mango

题目介绍

这是一道来自 GATE-CS-2003 的编程题,题目编号为第 47 题。本题旨在考察编程实现的基础能力,要求实现一个函数来处理字符串,具体要求详见下文。

题目描述

给定一个字符串 s ,请实现一个函数:

def reverse_word_order(s: str) -> str:
    pass

函数的参数为一个字符串 s,该函数需要将 s 中单词的顺序翻转过来,并返回处理后的字符串。

例如,对于字符串 s = "This is a test",函数应该返回 "test a is This"

需要注意的是,单词之间可能有多个空格,但是处理后的字符串中单词之间只能有一个空格。

样例输入输出

示例 1

输入:

"This is a test"

输出:

"test a is This"
示例 2

输入:

"   Hello world!   "

输出:

"world! Hello"

解题思路

首先,我们可以将字符串 s 以空格为分隔符,拆分成一个字符串列表。接着,反转该列表,再将其拼接成一个字符串即可。

需要注意的是,字符串中有可能存在多个空格,我们需要先用一个正则表达式将多个空格缩减为一个空格,然后再进行拆分和反转操作。

参考代码

下面是本题的参考实现代码,可供参考。

import re

def reverse_word_order(s: str) -> str:
    s = re.sub(r'\s+', ' ', s.strip())
    words = s.split(' ')
    words.reverse()
    return ' '.join(words)

代码说明:

首先,我们使用 re 模块的正则表达式功能将字符串 s 中的多个空格缩减为一个空格,并去除首尾的空格。然后,将字符串拆分成一个字符串列表,反转该列表,最后将其拼接为一个字符串并返回。