每日一道leetcode(python)557. 反转字符串中的单词 III

每日一道leetcode(python)557. 反转字符串中的单词 III

2021-08-18

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例:

输入:"Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"
 
提示:

在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

Python split()方法
描述:Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
split() 方法语法:str.split(str="", num=string.count(str)).
参数

  • str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
  • num – 分割次数。默认为 -1, 即分隔所有。
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( );       # 以空格为分隔符,包含 \n
print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个
------------------------
以上实例输出结果如下:
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']

思路

  • 按照空格对字符串进行分割;
  • 定义辅助列表,然后将分割部分的单词进行翻转,按照顺序添加到辅助列表中;
  • 最后将反转之后单词进行拼接,添加空格间隔。
class Solution:
    def reverseWords(self, s: str) -> str:
        s = s.split(' ') # s以空格分开以后成了列表类型
        res = '' # 创建一个空的字符串
        n = len(s)
        for i in range(n):
            if i != n - 1:
                s[i] = s[i][::-1] # 将每个单独的字符串进行翻转
                res = res + s[i] + ' '
            else: # 要考虑到最后一个字符串拼接的时候不能带空格
                s[i] = s[i][::-1] 
                res = res + s[i]
        return res

Python3 join()方法
描述:Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
join()方法语法:str.join(sequence)
参数:sequence – 要连接的元素序列。
返回值:返回通过指定字符连接序列中元素后生成的新字符串

s1 = "-"
s2 = ""
seq = ("r", "u", "n", "o", "o", "b") # 字符串序列
print (s1.join( seq ))
print (s2.join( seq ))

不用像之前那样考虑最后一个字符串不需要在后面添加空格

class Solution:
    def reverseWords(self, s: str) -> str:
        # 按照空格进行切割
        s = s.split(' ')
        # 然后将切割后的每部分都进行翻转
        ans = []
        for part in s:
            part = part[::-1]
            ans.append(part)

        # 最后拼接
        return ' '.join(ans)

思路:两次反转

  • 将字符串以空格分割后反转列表
  • 将列表以空格连接后反转字符串
class Solution:
    def reverseWords(self, s: str) -> str:
    	# s.split()[::-1] 将字符串以空格分割后反转列表
    	# ' '.join()[::-1]  将列表以空格连接后反转字符串      
    	return ' '.join(s.split()[::-1])[::-1]

递归写法不考虑,有兴趣自行查阅


版权声明:本文为dearzhuiyi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。