题目描述
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
思路分析:
方法一:
先将单词依空格分块,分别用[::-1]反向输出后再用join()依空格拼接。
代码1
class Solution(object):
def reverseWords(self, s):
"""
:type s: str
:rtype: str
"""
news = s.split() #将s中字符串以‘ ’为界进行分割,变成['Let's', 'take ', 'LeetCode', 'contest']
lis = [] #lis为新列表
for word in news: #word在news列表中
lis.append(word[::-1]) #将news的每个单词反转
return ' '.join(lis) #join是将lis里的字符串通过‘ ’连接
方法二:
- 对整个字符串做两次翻转实现反转字符串
- 第一次整体反转, 整个字符串逆序.(s[::-1])
- 第二次单词次序反转, 对反转字符串分割为单词列表(s[::-1].split()), 对单词次序反转(s[::-1].split()[::-1]).
代码2:
class Solution(object):
def reverseWords(self, s):
"""
:type s: str
:rtype: str
"""
return ' '.join(s[::-1].split()[::-1])
因为这里用到了python的split()函数,所以补充一下该函数的用法。
一、函数说明
1、split()函数
语法:str.split(str=“”,num=string.count(str))[n]
split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表
参数说明:
str:表示为分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等,但是不能为空(“”)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量
[n]:表示选取第n个分片
注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略
二、分离字符串例子
string =Nice.to.see.you
1.以‘.’为分隔符
print(string.split(‘.’))
[‘Nice’, ‘to’, ‘see’, ‘you’]
2.分割两次
print(string.split(‘.’,2))
[‘Nice’, ‘to’, ‘see.you’]
3.分割两次,并取序列为1的项
print(string.split(‘.’,2)[1])
to
4.分割两次,并把分割后的三个部分保存到三个文件
u1, u2, u3 =string.split(‘.’,2)
print(u1)—— Nice
print(u2)—— to
print(u3) ——see.you