当前位置: 首页 > news >正文

【LeetCode】反转字符串中的单词

目录

  • 一、题目
  • 二、解法
  • 完整代码


一、题目

给你一个字符串 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 <= 104
s 包含英文大小写字母、数字和空格 ’ ’
s 中 至少存在一个 单词

进阶:如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用 O(1) 额外空间复杂度的 原地 解法。


二、解法

经典双指针问题。
既然是倒序放置单词,那么就可以利用双指针, 从后面开始找单词,找到一个单词,就拼接到答案res中,最后将res返回就好了
从后往前,需要注意的就是边界以及对空格的处理


完整代码

class Solution:def reverseWords(self, s: str) -> str:res = ""n = len(s)right_side = n - 1while right_side >= 0:end = right_sidewhile end >= 0 and s[end] == ' ':end -= 1start = endwhile start >= 0 and s[start] != ' ':start -= 1if start == end:breakword = s[start + 1: end + 1]res += " " + wordright_side = startreturn res[1 : ]

http://www.lryc.cn/news/389048.html

相关文章:

  • [leetcode]文件组合
  • 数据库断言
  • uniapp+nodejs实现小程序支付
  • SolidityFoundry 安全审计测试 memory滥用
  • 面试题--SpringBoot
  • Stable Diffusion中放大图像的3种方法
  • 生产者消费模式
  • PyMuPDF 操作手册 - 06 PDF的转换等
  • VUE3解决跨域问题
  • 2024阿里云大模型自定义插件(如何调用自定义接口)
  • 生成式人工智能将如何改变网络可访问性
  • 科普文:一文搞懂jvm实战(二)Cleaner回收jvm资源
  • 使用PyTorch高效读取二进制数据集进行训练
  • 应急响应:应急响应流程,常见应急事件及处置思路
  • Kotlin/Android中执行HTTP请求
  • 哈希表(C++实现)
  • 深入理解代理模式(Proxy Pattern)及其实际应用
  • Elasticsearch (1):ES基本概念和原理简单介绍
  • 【Python爬虫】Python爬取喜马拉雅,爬虫教程!
  • 基于Jmeter的分布式压测环境搭建及简单压测实践
  • IDEA常用代码模板
  • 基于大语言模型的多意图增强搜索
  • 【ai】ubuntu18.04 找不到 nvcc --version问题
  • 深入了解DDoS攻击及其防护措施
  • 【面试系列】产品经理高频面试题及详细解答
  • 前端特殊字符数据,后端接收产生错乱,前后端都需要处理
  • 力扣热100 哈希
  • [图解]SysML和EA建模住宅安全系统-05-参数图
  • JavaScript——对象的创建
  • 大二暑假 + 大三上