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

代码随想录day11(1)字符串:反转字符串中的单词 (leetcode151)

题目要求:给定一个字符串,将其中单词顺序反转,且每个单词之间有且仅有一个空格。

思路:因为本题没有限制空间复杂度,所以首先想到的是用split直接分割单词,然后将单词倒叙相加。

但如果想让空间复杂度为O(1)的话,可以使用快慢指针,慢指针指向的是最后实际存放的位置,快指针进行判断实现不同处理。所以过程就应该为先去除多余空格,然后整体反转再每个单词反转即可,例如:hello  world -> dlrow olleh ->world hello,但是实际实现是有些难度。

leetcode实战:

代码实现:

注:其中

if (s[i] != ' ')
if (slow != 0) s[slow++] = ' ';

第一个判断用来删除所有的空格,第二个判断是用来在单词之间重新增加空格。

while (i < s.size() && s[i] != ' ') 

此循环用来将单词插入,若遇到空格说明单词结束,重新开始下次for循环。

if (i == s.size() || s[i] == ' ')

此处用来将每个单词反转成正确顺序。

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

相关文章:

  • PlantUML - 时序图
  • VS Code 的粘性滚动预览 - 类似于 Excel 的冻结首行
  • Java中的List
  • Spring 框架模块深度解析:核心容器、数据访问、Web 层与其他关键模块
  • 前端配置开发环境,新电脑配置前端开发环境,Vue开发环境配置的详细过程(前端开发环境配置,电脑重置后配置前端开发环境)
  • 大模型(LLM)的量化技术Quantization原理学习
  • 2024.03.01作业
  • 力扣hot100:42.接雨水
  • 搜索回溯算法(DFS)1------递归
  • workstation 用途
  • 【三维重建】【SLAM】SplaTAM:基于3D高斯的密集RGB-D SLAM(CVPR 2024)
  • Go Barrier栅栏
  • [蓝桥杯 2023 省 B] 冶炼金属
  • 续Java的执行语句、方法--学习JavaEE的day07
  • 公网IP怎么获取?
  • 连接未来:探索嵌入式系统的智能化之路
  • 基于STM32制作的示波器(可对任意信号进行描点)
  • WEB APIs (5)
  • 物联网常见协议篇
  • Kubernetes-1
  • SpringMVC框架②
  • springboot230基于Spring Boot在线远程考试系统的设计与实现
  • 盘点:国家智能算力中心
  • 【C++】7-2 寻找完美数 分数 10
  • 基于Mahout实现K-Means聚类
  • 科技的成就(五十七)
  • 动态IP代理技术在网络爬虫中的实际使用
  • 计算机网络:深入探索HTTP
  • Netty(1)nio
  • 1.3 vue ui框架-element-ui框架