前言:剑指offer刷题系列
问题:
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。
示例:
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。
思路:
- 首先,使用strip()函数去除字符串首尾的空字符,然后可以使用split()函数将字符串按照空格分割成一个单词列表,例如"I am a student. "分割后得到[“I”, “am”, “a”, “student.”]。
- 然后,使用reverse()函数将列表反转,得到[“student.”, “a”, “am”, “I”]。
- 然后,使用join函数将反转后的列表用空格连接成一个新的字符串,得到"student. a am I"。
- 最后返回新的字符串即可。
基于上述思考,代码如下:
class Solution:
def reverseWords(self, s: str) -> str:
s = s.strip()
strs = s.split()
strs.reverse()
return ' '.join(strs)
执行结果如下图:
学到的知识点:
-
strip()函数:str.strip() 用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。返回移除后的新字符串。好处:清理字符串两端的多余字符,使得字符串更加规范和整洁。
使用场景:当我从文件或网络读取数据时,可能会遇到一些带有空白字符或其他无关字符的字符串,可以使用strip函数去除这些字符,方便后续处理;当需要将字符串作为参数传递给其他函数或模块时,可能会因为字符串头尾有不合法的字符而导致异常和错误,可以使用strip()函数去除这些字符,使得参数更合法和有效。
-
split()函数:str.split() 根据指定的分隔符将字符串切分成一个列表,返回切分后的子字符串。好处:将一个长字符串分割成多个短的字符串,方便后续的处理和分析。
当需要将一个字符串按照一定的规则进行重组或拼接时,可以使用split函数先将字符串分割成多个部分,然后对这些部分进行修改或排序,最后再使用join函数将它们连接起来。一般在刷题的时候,三个函数常常被用到对数据变量进行预处理。