LeetCode151:反转字符串中的单词
题目描述
给你一个字符串 s ,请你反转字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
示例
输入:s = “the sky is blue”
输出:“blue is sky the”
示例 2:
输入:s = " hello world "
输出:“world hello”
解释:反转后的字符串中不能存在前导空格和尾随空格。
示例 3:
输入:s = “a good example”
输出:“example good a”
解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。
思想
先去除多余空格,然后反转整个字符串,再对每个字符串中的单词进行反转
代码
erase去除多余空格的代码
erase的时间复杂度为O(n),所以下面的操作的时间复杂度就是O(n^2).
void removeExtrSpace(string& s) {for (int i = s.size() - 1; i > 0; i--) {if (s[i - 1] == s[i]&& s[i]==' ')s.erase(s.begin() + i);}if (s.size()>0 && s[s.size() - 1] == ' ')s.erase(s.begin() + s.size()-1);if (s.size() > 0 && s[0] == ' ')s.erase(s.begin());}
双指针去除多余的空格
//双指针去除多余的空格void removeExtrSpace2(string& s) {int slow = 0;for (int fast = 0; fast < s.size(); fast++) {if (s[fast] != ' ') {//手动控制空格,给单词之间添加空格。slow != 0说明不是第一个单词,需要在单词前添加空格。if (slow != 0) s[slow++] = ' ';while (fast < s.size() && s[fast] != ' ') {s[slow++] = s[fast++];}}}s.resize(slow);}
整体代码
class Solution {
public://双指针去除多余的空格void removeExtrSpace2(string& s) {int slow = 0;for (int fast = 0; fast < s.size(); fast++) {if (s[fast] != ' ') {//手动控制空格,给单词之间添加空格。slow != 0说明不是第一个单词,需要在单词前添加空格。if (slow != 0) s[slow++] = ' ';while (fast < s.size() && s[fast] != ' ') {s[slow++] = s[fast++];}}}s.resize(slow);}string reverseWords(string s) {removeExtrSpace2(s);//将整个字符串反转reverse(s.begin(), s.end());int start = 0;//反转每个单词for (int i = 0; i < s.size(); i++) {if (s[i] == ' ') {reverse(s.begin()+start, s.begin() + i);start = i + 1;}}reverse(s.begin() + start, s.end());return s;} };
相关文章:
LeetCode151:反转字符串中的单词
题目描述 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空…...
Linux入门-常见指令及权限理解
目录 1、Linux背景 1.1、发展历史 1.2、开源 1.3Linux企业应用现状 2、Linux下的基本命令 2.1、ls 指令 2.2、pwd 命令 2.3、cd 命令 2.4、touch命令 2.5、mkdir 命令 2.6、rmdir 指令和 rm指令 2.7 man 指令 2.8、cp指令 2.9、mv 指令 2.10 cat 2.11 more 2…...
找工作的经验总结一——渠道与简历
关于简历与面试的经验总结,也可以说是关于找工作的方法论。 这里我们用第一性原理的方法论来分析找工作这件事。 首先,我们的目的是什么? 当然是找工作,不论你是大学刚毕业,还是创业失败,或者是在家闲着…...
第 126 场 LeetCode 双周赛题解
A 求出加密整数的和 模拟 class Solution { public:int sumOfEncryptedInt(vector<int> &nums) {int res 0;for (auto x: nums) {string s to_string(x);char ch *max_element(s.begin(), s.end());for (auto &c: s)c ch;res stoi(s);}return res;} };B 执行…...
固态浸压计
Solid State Dip Meter(固态浸没仪/固态浸压计) 是真空管栅极浸入式仪表的固态半导体版本。它是一种用于测量 LC 电路谐振频率的仪器。LC 电路是由电感 (L) 和电容 (C) 组成的电路。当电感的感抗与电容的容抗相互抵消时,这些元件可以谐振于特定频率。 固态浸入式仪…...
Ubuntu上搭建TFTP服务
Ubuntu上搭建TFTP服务 TFTP服务简介搭建TFTP服务安装TFTP服务修改配置文件 重启服务 TFTP服务简介 TFTP是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适用于开销不大、不复杂的应用场合。TFTP协议专门为小文件传输而设计,只…...
SpringBoot3框架,事件和监听器、SPI
事件和监听器 生命周期监听 自定义监听器的步骤: 编写SpringApplicationRunListener实现类(各个实现方法的功能写在其sout内) public class MyAppListener implements SpringApplicationRunListener {Overridepublic void starting(Configu…...
sadtalker-api/
———— 下载sadtalker工程文件,包括844个模型 。。。。。。。。。。。。。。。。 配置环境: pip源,设置: pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple anaconda prompt, 进入命令行 how在 …...
vue+elementUI实现指定列的单元格可编辑
template中的代码如下: <div v-if"(item.label 高压侧 || item.label 低压侧)&&coloumnHeader.label 单柱片数"><div class"editableCell"><div v-if"item.label 高压侧" dblclick"changeValue(sco…...
RK3568平台开发系列讲解(基础篇)内核是如何发送事件到用户空间
🚀返回专栏总目录 文章目录 一、相关接口函数二、udevadm 命令三、实验沉淀、分享、成长,让自己和他人都能有所收获!😄 一、相关接口函数 kobject_uevent 是 Linux 内核中的一个函数, 用于生成和发送 uevent 事件。 它是 udev 和其他设备管理工具与内核通信的一种方式。…...
力扣---打家劫舍---动态规划
思路 1: 我将res[i]定义为:一定要取第 i 个房子的前提下,能获取的最大金额。那么直接用cnt从头记录到尾,每个房子的res最大值即是答案。那么递推公式是什么?res[i]max(res[i-2],res[i-1],...,res[0])nums[i]。数组初始…...
mac安装rust环境
mac安装rust环境 老规矩官方文档 1. mac官网使用的是脚本安装, 至于为啥没使用brew也没推荐俺也不太清楚 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh2. 一般来说中途会遇见有一个选择我这里选择直接回车默认安装(如果以后我研究明白的话会进行更新, 现在是…...
1058:求一元二次方程
【题目描述】 利用公式 求一元二次方程axbxc0的根,其中a不等于0。结果要求精确到小数点后5位。 【输入】 输入一行,包含三个浮点数a,b,c(它们之间以一个空格分开),分别表示方程axbxc0的系数。 【输出】 输出一行&…...
GraphQL入门之一对多关联查询
创建 Node.js 的工程 mkdir myapp cd myapp npm init (一路回车)安装依赖包 npm install apollo/server graphql定义 Schema 创建 schema.graphql 文件,内容如下: type Book {title: String!author: Author! }type Author {name: String!books: [Boo…...
MATLAB和Python数值和符号计算可视化物理学气体动能和粒子速度
要点 Python物理学差分数值和符号计算 热动力学计算:统计力学,分子动力学模型 Python寻找弹性物体的运动,LAMMPS 分子动力学模拟器模拟2D气体分子,Python原子模拟绘图,Python数值计算原子平衡性,Python绘制…...
阿里云-零基础入门NLP【基于机器学习的文本分类】
文章目录 学习过程赛题理解学习目标赛题数据数据标签评测指标解题思路TF-IDF介绍TF-IDF 机器学习分类器TF-IDF LinearSVCTF-IDF LGBMClassifier 学习过程 20年当时自身功底是比较零基础(会写些基础的Python[三个科学计算包]数据分析),一开始看这块其实挺懵的&am…...
蓝桥杯模块综合——高质量讲解AT24C02,BS18B20,BS1302,AD/DA(PCF8591),超声波模块
AT24C02——就是一个存储的东西,可以给他写东西,掉电不丢失。 void EEPROM_Write(unsigned char * EEPROM_String,unsigned char addr , unsigned char num) {IIC_Start();IIC_SendByte(0xA0);IIC_WaitAck();IIC_SendByte(addr);IIC_WaitAck();while(nu…...
前端跨平台开发框架:简化多端开发的利器
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
cesium.js加载模型后,重新设置旋转角度属性值
// 加载模型var position Cesium.Cartesian3.fromDegrees(longitude, latitude, height);// 计算矩阵var rollAngleDegrees 15; // 设置翻滚角度var rollAngleRadians Cesium.Math.toRadians(rollAngleDegrees); // 将角度转换为弧度var orientation Cesium.Transforms.eas…...
②免费AI软件开发工具测评:通义灵码 VS 码上飞
前言 我又双叒叕来测评了!上次给大家带来的是iFlyCode和CodeFlying两款产品的测评,受到了大家的一致好评~ 今天咱就继续来聊聊,这次我们选的的对象是通义灵码和码上飞,从名字上也能看到出来这两款产品一定是跟软件开发有关系的&…...
别再傻傻分不清了!BIOS里的SCI、SMI和IRQ到底有啥区别?用大白话给你讲明白
BIOS中的SCI、SMI和IRQ:用生活场景理解计算机中断机制 刚接触计算机底层开发的朋友,第一次看到BIOS设置里那些晦涩的缩写——SCI、SMI、IRQ,是不是感觉头都大了?别担心,今天我们就用最生活化的例子,帮你彻底…...
FlashDB磨损平衡机制揭秘:如何延长Flash寿命的终极指南
FlashDB磨损平衡机制揭秘:如何延长Flash寿命的终极指南 【免费下载链接】FlashDB An ultra-lightweight database that supports key-value and time series data | 一款支持 KV 数据和时序数据的超轻量级数据库 项目地址: https://gitcode.com/gh_mirrors/fl/Fla…...
UEFI Setup界面开发避坑指南:grayoutif、suppressif条件控制与varstore变量存储的实战解析
UEFI Setup界面开发避坑指南:条件控制与变量存储的实战解析 在UEFI固件开发中,Setup界面作为用户与系统交互的重要桥梁,其开发质量直接影响用户体验和系统稳定性。本文将深入探讨如何避免UEFI Setup界面开发中的常见陷阱,特别是条…...
<climits>
简介这个头文件比较特殊,不包含复杂的函数,而是定义了一系列宏常量,用于描述当前编译平台下各种整型数据类型的取值范围(最小值和最大值)UCHAR_MAX //(255U): 无符号字符型的最大值。U 表示无符号常量SCHAR_MIN //-12…...
ERP系统与医疗器械生产管理规范的契合点
ERP系统与医疗器械生产管理规范的契合点 医疗器械生产管理规范(GMP)对数据完整性、过程追溯性、质量管理体系有严格要求。ERP系统通过以下模块实现合规: 主数据管理 建立医疗器械唯一标识(UDI)数据库,确保产…...
AUTOSAR DEM实战:手把手教你配置KL30电压监控的Debounce参数(含代码示例)
AUTOSAR DEM实战:KL30电压监控Debounce参数配置全解析 在汽车电子系统开发中,电压监控是确保车辆电气系统稳定运行的关键功能。KL30作为常电电源线,其电压异常可能引发一系列连锁反应。本文将深入探讨如何通过AUTOSAR DEM模块的Debounce机制&…...
别再为SURF/SIFT发愁了!Ubuntu 20.04下OpenCV_contrib离线安装全攻略(含预编译模型包)
Ubuntu 20.04下OpenCV_contrib离线安装终极指南:预编译模型包与避坑手册 在计算机视觉开发中,SURF、SIFT等经典特征提取算法依然是许多项目的基石。然而,当你在Ubuntu 20.04上尝试安装OpenCV_contrib扩展库时,可能会遇到各种网络下…...
Spring WebFlux实战:手把手教你用WebFilter和Context实现全局请求日志追踪
Spring WebFlux全链路追踪实战:从WebFilter到Reactor Context的深度设计 当微服务架构遇上响应式编程,传统的日志追踪方案突然变得力不从心。想象这样一个场景:某电商平台大促期间,订单服务突然出现异常响应延迟,但当你…...
七大排序算法终极速查手册
一、先回顾:我们学过哪些排序?从 day21~day23 学了 7 种排序,分为两类:O (n) 简单排序冒泡排序选择排序插入排序O (n log n) 高效排序希尔排序快速排序归并排序堆排序二、一张表记住所有排序(面试必背&…...
终极指南:10分钟掌握FanControl,让你的电脑风扇智能又安静
终极指南:10分钟掌握FanControl,让你的电脑风扇智能又安静 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/Git…...
