力扣-151. 反转字符串中的单词
文章目录
- 看下去,你一定可以理解此题,写的简单易懂
- 力扣题目
- 解题思路
- 函数构成
- 1.反转函数
- 2.消除掉多余空格函数
- 整体函数
看下去,你一定可以理解此题,写的简单易懂
力扣题目
给你一个字符串 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.通过removeElement函数来去掉字符串中多余的0;
2.通过revise函数先反转整个字符串;
3.在反转每一个单词,就达到了题目中的要求。
(反转每一个单词过程可以参考我的此篇文章-力扣-557. 反转字符串中的单词 III)
函数构成
1.反转函数
void revise(char* start, char* end)
{char temp;while (start < end){temp = *end;*end = *start;*start = temp;start++;end--;}
}
只需要输入反转的起始地址和终止地址即可完成反转
2.消除掉多余空格函数
int removeElement(char* str, int len, int val)
{int slow = 0; //慢指针int fast = 0; //快指针for (fast = 0; fast < len; fast++){if (val != str[fast])/*如果不是空格就赋值*/{if (slow != 0)/*确保字符串的最前边没有空格*/{str[slow] = ' ';slow++;}}while ((fast < len) && str[fast] != val)/*快指针遍历一个完整的单词赋值给慢指针*/{str[slow] = str[fast];slow++;fast++;}}str[slow] = '\0';return slow;
}
整体函数
void revise(char* start, char* end)
{char temp;while (start < end){temp = *end;*end = *start;*start = temp;start++;end--;}
}
int removeElement(char* str, int len, int val)
{int slow = 0; //慢指针int fast = 0; //快指针for (fast = 0; fast < len; fast++){if (val != str[fast])/*如果不是空格就赋值*/{if (slow != 0)/*确保字符串的最前边没有空格*/{str[slow] = ' ';slow++;}}while ((fast < len) && str[fast] != val)/*快指针遍历一个完整的单词赋值给慢指针*/{str[slow] = str[fast];slow++;fast++;}}str[slow] = '\0';return slow;
}char* reverseWords(char* s)
{char* start = NULL;char* end = NULL;int len = strlen(s);int i = 0;/*取得移除多余0后字符串的长度*/len = removeElement(s, len, ' ');/*反转全部字符串*/revise(&s[0], &s[len - 1]);/*反转每一个单词*/start = s;/*字符串首地址赋值*/for (i = 0; i < len; i++){if (s[i] == ' '){end = &s[i];/*记录空格的位置*/revise(start, end - 1);start = end + 1;/*记录空格后字符的位置*/}else if (s[i + 1] == '\0')/*最后一个单词特殊处理*/{end = &s[i];revise(start, end);start = NULL;}}return s;
}
如果有需要可以跳转leetcode直接看我提交的解题:151. 反转字符串中的单词
相关文章:
力扣-151. 反转字符串中的单词
文章目录 看下去,你一定可以理解此题,写的简单易懂力扣题目解题思路函数构成1.反转函数2.消除掉多余空格函数 整体函数 看下去,你一定可以理解此题,写的简单易懂 力扣题目 给你一个字符串 s ,请你反转字符串中 单词 …...
VSCode Keil Assintant 联合开发STM32
文章目录 VSCodeKeil AssistantUV5🥇软件下载🥇配置环境🥇插件安装🥈C/C Extension Pack🥉C/C Extension Pack介绍🥉插件安装 🥈Keil Assistant🥉Keil Assistant介绍🥉插…...
华为交换机基本配置
一、配置时间 sys ntp-service unicast-server 192.168.1.1 ntp-service unicast-server 192.168.1.2 clock timezone UTC add 8 clock timezone CST add 08:00:00 undo ntp-service disable q手动设置一个时间 clock datetime 13:43:00 2023-10-10save ysys保存!保…...
每天一个Linux命令 -- (7)more命令
欢迎阅读《每天一个Linux命令》系列!在本篇文章中,将介绍Linux系统下的more命令,它用于逐屏显示文件的内容。 概念 more命令是Linux系统下的文件逐屏显示命令,用于逐屏显示文件的内容。 命令操作 more命令的语法如下࿱…...
JUnit 之初体验
文章目录 1.定义2.引入1)使用 Maven 工具2)使用 Gradle 工具3)使用 Jar 包 2.样例0)前提1)测试类2)测试方法3)测试断言4)实施 总结 1.定义 JUnit 是一个流行的 Java 单元测试框架&a…...
【前端设计模式】之适配器模式
适配器模式是一种常见的设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。在前端开发中,适配器模式可以帮助我们解决不同框架或库之间的兼容性问题,提高代码的复用性和可维护性。 适配器模式特性 适配器类:适配器类…...
【数据结构】循环队列
🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 🎏队列顺序存储的不足 🎏循环队列的定义 🎏设计循环队列 结语 🎏队列顺序存储的不足 我们假设用一个可以存放为n个数据…...
Docker的资源控制
Docker的资源控制: 对容器使用宿主机的资源进行限制,Docker 通过 Cgroup 来控制容器使用的资源配额,包括 CPU 内存 磁盘i/o Docker 使用Linux自带的功能cgroup,Cgroup 是 ControlGroups 的缩写 C crontrol groups是Linux内核…...
SpringBoot 自动装配原理详解
什么是 SpringBoot 自动装配? 我们现在提到自动装配的时候,一般会和 Spring Boot 联系在一起。但是,实际上 Spring Framework 早就实现了这个功能。Spring Boot 只是在其基础上,通过 SPI 的方式,做了进一步优化。 Spr…...
深度探索Linux操作系统 —— 构建initramfs
系列文章目录 深度探索Linux操作系统 —— 编译过程分析 深度探索Linux操作系统 —— 构建工具链 深度探索Linux操作系统 —— 构建内核 深度探索Linux操作系统 —— 构建initramfs 文章目录 系列文章目录前言一、为什么需要 initramfs二、initramfs原理探讨三、构建基本的init…...
使用cmake构建Qt6.6的qt quick项目,添加应用程序图标的方法
最近,在学习qt的过程中,遇到了一个难题,不知道如何给应用程序添加图标,按照网上的方法也没有成功,后来终于自己摸索出了一个方法。 1、准备一张图片作为图标,保存到工程目录下面,如logo.ico。 …...
VUE宝典之vue-dialog使用
文章目录 🍁vue-dialog概述🍁vue-dialog项目引入🍂安装Vue Dialog插件🍂引入Vue Dialog插件🍂引入 Vue Dialog 组件🍂在组件中使用Vue Dialog 🍁vue-dialog代码示例🍁vue-dialog父子…...
AWTK 串口屏开发(1) - Hello World
1. 功能 这个例子很简单,制作一个调节温度的界面。在这里例子中,模型(也就是数据)里只有一个温度变量: 变量名数据类型功能说明温度整数温度。范围 (0-100) 摄氏度 2. 创建项目 从模板创建项目,将 hmi/…...
鸿蒙Harmony开发初探
一、背景 9月25日华为秋季全场景新品发布会,余承东宣布鸿蒙HarmonyOS NEXT蓄势待发,不再支持安卓应用。网易有道、同程旅行、美团、国航、阿里等公司先后宣布启动鸿蒙原生应用开发工作。 二、鸿蒙Next介绍 HarmonyOS是一款面向万物互联,全…...
【MySQL语言汇总[DQL,DDL,DCL,DML]以及使用python连接数据库进行其他操作】
MySQL语言汇总[DQL,DDL,DCL,DML] SQL分类1.DDL:操作数据库,表创建 删除 查询 修改对数据库的操作对表的操作复制表(重点)!!!!! 2.DML:增删改表中数据3.DQL:查询表中的记录…...
解决方案:Mac 安装 pip
python3 --version 通过以下命令来下载pip: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py curl命令允许您指定一个直接下载链接。使用-o选项来设置下载文件的名称。 通过运行以下命令安装下载的包: python3 get-pip.py...
【恋上数据结构】前缀树 Tire 学习笔记
Tire 需求分析 如何判断一堆不重复的字符串是否以某个前缀开头? 用 Set\Map 存储字符串(不重复)遍历所有字符串进行判断缺点:时间复杂度 O(n) 有没有更优的数据结构实现前缀搜索? Tire(和 Tree 同音&a…...
2023五岳杯量子计算挑战赛数学建模思路+模型+代码+论文
赛题思路:12月6日晚开赛后第一时间更新,获取见文末名片 “五岳杯”量子计算挑战赛,是国内专业的量子计算大赛,也是玻色量子首次联合移动云、南方科技大学共同发起的一场“企校联名”的国际竞赛,旨在深度融合“量子计算…...
Angular中的单向和双向数据绑定
1、单向数据绑定: 单向数据绑定是指数据从组件流向视图或从视图流向组件,但数据的流动是单向的。 在Angular中,主要有以下两种形式的单向数据绑定: 从组件到视图(插值表达式): 使用插值表达式…...
【Vue】vue整合element
上一篇: vue项目的创建 https://blog.csdn.net/m0_67930426/article/details/134816155 目录 整合过程 使用: 整合过程 项目创建完之后,使用编译器打开项目 在控制器里输入如下命令 npm install element-ui 如图表示安装完毕 然后在…...
如何用AD8232构建你的第一个专业级心电监测系统:从零到一的完整指南
如何用AD8232构建你的第一个专业级心电监测系统:从零到一的完整指南 【免费下载链接】AD8232_Heart_Rate_Monitor AD8232 Heart Rate Monitor 项目地址: https://gitcode.com/gh_mirrors/ad/AD8232_Heart_Rate_Monitor 想要亲手打造一个专业级的心电监测设备…...
分布式事务方案:Seata XA、AT、TCC 与 MQ
只要一个业务操作同时写多个服务的数据,就会遇到分布式事务问题。比如下单要写订单、扣库存、扣余额,任意一步失败都可能造成数据不一致。 一句话概括:Seata 通过 TC、TM、RM 协调全局事务和分支事务;XA 追求强一致但性能差&#…...
DeepL Chrome翻译插件:让高质量翻译触手可及
DeepL Chrome翻译插件:让高质量翻译触手可及 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 在信息爆炸的今天,我们每天都会接触到大量外文…...
混合智能优化:数据驱动与约束求解在护士排班中的实践
1. 项目概述与核心挑战护士排班问题(Nurse Scheduling Problem, NSP)是医疗运营管理中的一块硬骨头。表面上看,它只是把一群护士分配到每天的各个班次上,但实际操作起来,你会发现这背后是一个由无数条规则、偏好和限制…...
Taotoken 的用量看板如何帮助我清晰掌握每月大模型支出
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken 的用量看板如何帮助我清晰掌握每月大模型支出 对于个人开发者或项目管理者而言,大模型 API 的调用成本常常是…...
三年级下册语文第八单元作文:这样想象真有趣
《这样想象真有趣》是三年级非常经典的“童话想象作文”。重点是:✅ 想象大胆 ✅ 故事情节有趣 ✅ 人物会说话、会行动 ✅ 最后最好有一点启发我用夸克网盘分享了「三年级下册语文作文」,1-8单元。链接:https://pan.quark.cn/s/a80b7ca7f993这…...
Real-ESRGAN-GUI完全指南:让模糊图片秒变高清的免费AI神器
Real-ESRGAN-GUI完全指南:让模糊图片秒变高清的免费AI神器 【免费下载链接】Real-ESRGAN-GUI Lovely Real-ESRGAN / Real-CUGAN GUI Wrapper 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-GUI 还在为模糊的老照片、低分辨率的网络图片而烦恼吗&…...
终极塔科夫离线存档编辑器:5步掌握SPT-AKI Profile Editor完整指南
终极塔科夫离线存档编辑器:5步掌握SPT-AKI Profile Editor完整指南 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitcode.com/…...
量子机器学习在水质预测中的实践:QSVC与QNN模型对比分析
1. 项目概述:当量子计算遇见水质监测作为一名长期关注前沿技术落地的从业者,我最近完成了一个将量子机器学习(QML)应用于水质预测的实践项目。这个项目的核心,是尝试用量子计算的新范式,去解决一个经典的环…...
HAR模型调优实战:为何精心调优的线性模型能击败复杂机器学习?
1. 项目概述:当HAR模型遇上机器学习,一场关于“调优”的较量在金融计量和量化交易领域,预测明天的市场波动率,就像试图预测一场风暴的强度,充满了挑战但也至关重要。无论是为了给衍生品定价、管理投资组合风险…...
