当前位置:网站首页>LeetCode #557.反转字符串中的单词 III
LeetCode #557.反转字符串中的单词 III
2022-07-29 05:24:00 【张楚明ZCM】
题目截图

方法一:使用额外空间
先设置一个新的列表ans,将原字符串遍历分解反转后存入列表,最后再利用join()函数将列表转为新字符串返回。
遍历方法:从头到尾遍历一遍,设置两个指针i和start。
先令start等于i,没有空格时i累加;
然后从start到i开始遍历并逆序在ans列表填入元素;
碰到空格后i再次累加,并在ans列表添加空格;
令start再次等于i,然后重复第一步、和第二部继续遍历逆序填入元素,直到外层遍历完成。再将列表转换为字符串。
这个算法相当于每次碰到空格后开始逆序填入前面的非空格元素,最后达到题目要求的单词逆序,但是每个单词的位置是顺序的。
def reverseWords(self, s: str) -> str:
n = len(s)
ans=[]
i = 0
while i < n:
start = i
while i < n and s[i] !=" ":
i += 1
for p in range(start, i):
ans.append(s[start + i - 1 -p])
while i < n and s[i] ==" ":
i += 1
ans.append(" ")
return "".join(ans)完整测试代码
class Solution:
def reverseWords(self, s: str) -> str:
n = len(s)
ans=[]
i = 0
while i < n:
start = i
while i < n and s[i] !=" ":
i += 1
for p in range(start, i):
ans.append(s[start + i - 1 -p])
while i < n and s[i] ==" ":
i += 1
ans.append(" ")
return "".join(ans)
class main:
a = Solution()
s = "Let's take LeetCode contest"
print(s)
b=a.reverseWords(s)
print(b)
if __name__ == '__main__':
main()
方法二:利用python的split()函数遍历切片反转
直接利用split()函数将单词从字符串中切出来反转,然后利用join()函数组合成新字符串返回。
class Solution(object):
def reverseWords(self, s):
return " ".join(word[::-1] for word in s.split(" "))方法三:两次切片
还可以不用遍历,直接用两次切片反转。
s.split(" ")切片可以将字符串且切为单词,而s.split(" ")[::-1]可以将字符串切为单词后单词的顺序反转。
" ".join()可以将单词列表转为字符串,而" ".join()[::-1]可以将单词列表转为的字符串反转。
所以" ".join(s.split(" ")[::-1])[::-1]的两次反转,可以将字符串的每个单词字母反转,但是单词顺序不变。
class Solution(object):
def reverseWords(self, s):
return " ".join(s.split(" ")[::-1])[::-1]或者也可以先反转字符串,再反转每个单词的顺序。
class Solution(object):
def reverseWords(self, s):
return " ".join(s[::-1].split(" ")[::-1])边栏推荐
猜你喜欢

抽象封装继承多态

【软件工程之美 - 专栏笔记】17 | 需求分析到底要分析什么?怎么分析?

Hal library learning notes - 9 DMA

基于F407ZGT6的WS2812B彩灯驱动

ML10 self study notes SVM

Ml8 self study notes LDA principle formula derivation

arduino uno错误分析avrdude: stk500_recv(): programmer is not responding

2022暑初二信息竞赛学习成果分享2

Dust and noise monitoring system

基于wifi的温度采集与控制系统
随机推荐
2022 spring move - core technology FPGA post technical aspects (one side experience)
倾角传感器用于通信铁塔、高压电塔长期监测
网络安全学习篇
SimpleFOC调参3-PID参数整定攻略
Power electronics: single inverter design (matlab program +ad schematic diagram)
【软件工程之美 - 专栏笔记】24 | 技术债务:是继续修修补补凑合着用,还是推翻重来?
Torch. NN. Parameter() function understanding
ML10 self study notes SVM
Jingwei Qili: development of heart rate and blood oxygen module based on hmep060 (1: FPGA sends multi bit instructions)
基于stm32的四针OLED显示
Ml8 self study notes LDA principle formula derivation
基于DAC0832的直流电机控制系统
Am model in NLP field
FT232替代GP232RL USB-RS232转换器芯片国产化应用
基于msp430f2491的proteus仿真(实现流水灯)
关于【链式前向星】的自学理解
封装——super关键字
【软件工程之美 - 专栏笔记】26 | 持续交付:如何做到随时发布新版本到生产环境?
八大排序-----------快速排序
Hal library learning notes-12 SPI