当前位置: 首页 > 后端技术 > Python

LeetCode151.反转字符串中的单词

时间:2023-03-26 01:59:56 Python

151.ReverseWordsinaStringTopic来源:https://leetcode-cn.com/problems/reverse-words-in-a-stringTopic给定一个字符串,将字符串中的每个单词一一翻转。示例1:输入:“天空是蓝色的”输出:“蓝色是天空的”示例2:输入:“helloworld!”输出:"world!hello"解释:输入的字符串可以在前后包含额外的空格,但不能包含反义字符。示例3:输入:“agoodexample”输出:“examplegooda”解释:如果两个单词之间有多余的空格,则将反向单词之间的空格减少到只有一个。解释:没有空格字符组成一个词。输入字符串前后可以包含额外的空格,但反转的字符不能。如果两个单词之间有多余的空格,则将反向单词之间的空格减少到只有一个。解题思路思路一:利用语言特性,python语言提供了splitcutting、joinconnection等方法,可以直接调用内置的方法来解决这个问题。具体步骤:使用split对字符进行拆分,得到一个字符串列表。使用切片操作来反转字符串列表。使用join将反转的字符串列表与空格拼接。使用这种方法写完代码后,可以考虑自己写函数实现,或者用其他思路实现。思路二:双指针因为最终的结果需要数组倒序输出,所以在最后定义了双指针,倒序遍历数组。标题指出[没有空格字符构成一个词]。然后按照这个原则,确定词边界,把词加入到定义的列表中。最后一步也是将单词列表连接回去。具体过程如下图所示:代码实现语言特点:代码实现类解决方案:defreverseWords(self,s:str)->str:return''.join(s.split()[::-1])双指针:代码实现类解决方案:defreverseWords(self,s:str)->str:#尾部定义指针p=len(s)-1#定义返回结果ans=[]whilep>=0:#以相反的顺序遍历,删除这里第一个尾随空格whilep>=0ands[p]=='':p-=1#resetpointerq=p#这一步阻止了开头的空格,#结束时添加空格返回结果ifq<0:break#确定单词边界whilep>=0ands[p]!='':p-=1#将单词放入结果ans.append(s[p+1:q+1])#ConcatenationreturnsResultreturn''.join(ans)实现结果语言特性:实现结果双指针:实现结果以上就是使用语言特性,或者说使用双指针方式的主要内容解决问题《151. 翻转字符串里的单词》。欢迎关注微信公众号《书所集录》