当前位置:网站首页>LeetCode中等题之颠倒字符串中的单词
LeetCode中等题之颠倒字符串中的单词
2022-08-10 12:05:00 【·星辰大海】
题目
给你一个字符串 s ,颠倒字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
示例 1:
输入:s = “the sky is blue”
输出:“blue is sky the”
示例 2:
输入:s = " hello world "
输出:“world hello”
解释:颠倒后的字符串中不能存在前导空格和尾随空格。
示例 3:
输入:s = “a good example”
输出:“example good a”
解释:如果两个单词间有多余的空格,颠倒后的字符串需要将单词间的空格减少到仅有一个。
提示:
1 <= s.length <= 10^4
s 包含英文大小写字母、数字和空格 ’ ’
s 中 至少存在一个 单词
进阶:如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用 O(1) 额外空间复杂度的 原地 解法。
来源:力扣(LeetCode)
解题思路
可以直接利用python的过滤器和字符切片以及join完成题目要求。
class Solution:
def reverseWords(self, s: str) -> str:
s=list(filter(lambda x:x!='',s.split(' ')))
s.reverse()
return ' '.join(s)
题目的进阶要求是需要原地进行操作,我们可以模拟刚才的函数,先对字符串进行去除多余的空格,然后在把整个字符串进行反转,最后遍历整个反转的字符串,针对单个单词再进行逐个反转。
class Solution:
def reverseWords(self, s: str) -> str:
s=s.strip()
i,flag=0,1
while i<len(s):
while not flag and s[i]==' ':
s=s[0:i]+s[i+1:]
flag=1
if flag and s[i]==' ':
flag=0
i+=1
n=len(s)
def swap(a,b,s):
temp=s[a]
s=s[0:a]+s[b]+s[a+1:]
s=s[0:b]+temp+s[b+1:]
return s
for i in range(n//2):
s=swap(i,n-1-i,s)
temp,count='',0
s+=' '
for i in s:
if i!=' ':
temp=i+temp
else:
s=s[0:count-len(temp)]+temp+s[count:]
temp=''
count+=1
return s[:-1]
边栏推荐
猜你喜欢
Custom filters and interceptors implement ThreadLocal thread closure
StarRocks on AWS Review | Data Everywhere Series Event Shenzhen Station ended successfully
Chapter9 : De Novo Molecular Design with Chemical Language Models
three.js模糊玻璃效果
mpf6_Time Series Data_quandl_correct kernel PCA_AIC_BIC_trend_log_return_seasonal_decompose_sARIMAx_ADFull
吃透Chisel语言.36.Chisel实战之以FIFO为例(一)——FIFO Buffer和Bubble FIFO的Chisel实现
时间序列的数据分析(五):简单预测法
CURRENT_TIMESTAMP(6) 函数是否存在问题?
中科院深圳先进技术院合成所赵国屏院士组2022年招聘启事
解决 idea 单元测试不能使用Scanner
随机推荐
LeetCode 369. Plus One Linked List
CURRENT_TIMESTAMP(6) 函数是否存在问题?
堪称神级的阿里巴巴“高并发”教程——基础+实战+源码+面试+架构 全包了
Highways「建议收藏」
一文详解 implementation api embed
基于PLECS的离网(孤岛)并联逆变器的Droop Control下垂控制仿真
【list合并】多个list合并为一个list
three.js blur glass effect
LeetCode 82. Remove Duplicate Elements in Sorted List II
【集合】HashSet和ArrayList的查找Contains()时间复杂度
时间序列的数据分析(五):简单预测法
什么是云流化?
LeetCode 21. Merge two ordered linked lists
Chapter9 : De Novo Molecular Design with Chemical Language Models
十八、一起学习Lua 调试(Debug)
LeetCode 445. Adding Two Numbers II
中科院深圳先进技术院合成所赵国屏院士组2022年招聘启事
StarRocks on AWS 回顾 | Data Everywhere 系列活动深圳站圆满结束
Polygon zkEVM工具——PIL和CIRCOM
2016,还是到了最后