151.反转字符串中的单词

给你一个字符串 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”
解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。

解题思路

用一个哈希表来存储单词,通过循环取单词(遇到空格就把之前的添加到哈希表),然后从哈希表的末尾开始输出,最后处理空格的问题

class Solution {
public:string reverseWords(string s) {unordered_map<int, string> re;int n = 0;string temp = "";for (int i = 0; i < s.length(); i++) {if (s[i] == ' ') {      //如果遇到空格,且temp里有数据,就把temp加入哈希表,然后初始化tempif (!temp.empty()) {re[n] = temp;++n;temp = "";}} else {temp += s[i];}}if (!temp.empty()) {  //最后一个temp保存的数据,不会再经过循环(循环满了)添加进行哈希表,所以单独添加re[n] = temp;}string result;for (int i = n; i >= 0; i--) {//从尾部开始选取if (re.find(i) != re.end()) {result += re[i];if (i > 0) { // 不在最后一个单词后面加空格result += " ";}}}// 删除字符串开头的空格if (!result.empty() && result[0] == ' ') {result = result.substr(1);}return result;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PMP学习和考试难度分析

PMP&#xff08;项目管理专业人士&#xff09;考试目前是全球范围内比较具权威性和认可度的项目管理证书之一。因此PMP考试的难度是一个备受关注的话题。根据我们以往的学员经验我从不同角度解析PMP考试的难度&#xff0c;并提供一些应对挑战的建议。希望对大家有所帮助。 PMP考…

关于二进制中1的个数的研究

先看以下代码&#xff1a; #include<bits/stdc.h> #define ll long long #define un unsigned using namespace std; ll a[500005]; ll x[500005]; void init(){for(int i1;i<500000;i){x[i]__builtin_popcount(i); } } int main(){init();for(int i1;i<500000;i)…

Ubuntu 安装好虚拟环境后,找不到workon 命令

1、安装虚拟环境 pip3 install virtualenv pip3 install virtualenvwrapper 2、安装完成后 workon 命令。 找不到workon 命令 执行&#xff0c;source virtualenvwrapper.sh 执行后&#xff0c;在使用workon命令&#xff0c;即可完成。

JS【详解】时间复杂度

时间复杂度是从时间维度描述一段代码的复杂程度&#xff0c;由一段代码中执行频次最高的语句决定&#xff0c;用大O符号表述。 时间复杂度的分类 从低到高依次是&#xff1a; 常数时间复杂度 O(1)&#xff1a;无论问题规模如何变化&#xff0c;算法的运行时间都保持不变。 线性…

君耐策划有限公司员工信息管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;公告管理&#xff0c;薪资管理&#xff0c;员工考勤管理 员工账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;公告管理&#xff0…

vivo鄢楠:基于OceanBase 的降本增效实践

在3 月 20 日的2024 OceanBase 数据库城市行中&#xff0c;vivo的 体系与流程 IT 部 DBA 组总监鄢楠就“vivo 基于 OceanBase 的降本增效实践”进行了主题演讲。本文为该演讲的精彩回顾。 vivo 在1995年于中国东莞成立&#xff0c;作为一家全球领先的移动互联网智能终端公司&am…

【智能算法】吸引-排斥优化算法(AROA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;K Cymerys受到自然界中吸引-排斥现象启发&#xff0c;提出了吸引-排斥优化算法&#xff08;Attraction–Repulsion Optimization Algorithm, AROA&#xff09;。 2.算法…

Python—面向对象小解(5)

一、多任务介绍 1.1 进程与线程 进程是操作系统分配资源的最小单元 线程执行程序的的最小单元 线程依赖进程&#xff0c;可以获取进程的资源 一个程序执行 先要创建进程分配资源&#xff0c;然后使用线程执行任务 默认情况下一个进程中有一个线程 1.2 多任务介绍 运行多个进程…

代码随想录算法训练营第四十五天| 1049. 最后一块石头的重量 II、494. 目标和、474.一和零

1049. 最后一块石头的重量 II 题目链接&#xff1a;1049. 最后一块石头的重量 II 文档讲解&#xff1a;代码随想录/最后一块石头的重量 II 视频讲解&#xff1a;视频讲解-最后一块石头的重量 II 状态&#xff1a;已完成&#xff08;1遍&#xff09; 解题过程 这几天属实是有…

深入解析CRM客户关系系统:技术架构与功能实现的融合创新

CRM客户关系管理系统&#xff08;Customer Relationship Management System&#xff09;是一种以客户为中心的信息系统&#xff0c;旨在帮助企业更好地管理和维护客户关系&#xff0c;提高客户满意度和忠诚度&#xff0c;从而提升企业的市场竞争力。以下是CRM客户关系管理系统的…

Python父子继承

下列代码输出是&#xff1a; python class Parent: def __init__(self)&#xff1a; self.value4 def get_value(self)&#xff1a; return self.value class Child(Parent): def get_value(self)&#xff1a; return self.value1…

Lua与Python:深度解析两者之间的核心差异

Lua与Python&#xff1a;深度解析两者之间的核心差异 在计算机编程的广袤领域中&#xff0c;Lua和Python作为两种具有独特特性和应用领域的语言&#xff0c;各自闪耀着独特的光芒。然而&#xff0c;尽管它们都是编程语言&#xff0c;但Lua和Python在多个方面存在着显著的差异。…

深度学习和计算机视觉中的backbone

在深度学习和计算机视觉中&#xff0c;“backbone” 是指深度神经网络的主要部分&#xff0c;通常用于特征提取。骨干网络通过卷积操作提取图像中的低级和高级特征&#xff0c;为后续的特定任务&#xff08;如分类、检测、分割等&#xff09;提供丰富的信息。这些骨干网络一般是…

电磁兼容整改时磁环怎么选型

电磁兼容整改时磁环怎么选型 磁环的选型错误磁环特性纳米微晶磁环磁环选型示例磁环选型 一条线缆两端都有设备&#xff0c;那磁环应该放在哪里&#xff1f; 我们怎么样来选择这个磁环&#xff0c;通过磁环的吸收作用&#xff0c;让辐射的强度和传导发射的这个强度衰减更大的那我…

OLED C语言编程:深度解析与实战应用

OLED C语言编程&#xff1a;深度解析与实战应用 OLED显示技术以其出色的显示效果和低功耗特性&#xff0c;在现代电子设备中得到了广泛应用。而C语言作为一种高效、灵活的编程语言&#xff0c;自然成为OLED编程的首选。本文将从四个方面、五个方面、六个方面和七个方面&#x…

Linux|虚拟机|Windows 11 家庭版的Hyper虚拟机服务开启

前言&#xff1a; Windows11的版本是比较多的&#xff0c;但有的时候笔记本预装的可能是家庭版&#xff0c;而家庭版的Windows通常是不支持虚拟机的&#xff0c;也就是说Hyper服务根本就看不到 Windows的程序和功能大体如下&#xff1a; &#x1f197;&#xff0c;那么如何开…

最近关于工作与学习的一点思考

文章目录 关于工作关于学习职业规划 关于工作 我2015年大学毕业&#xff0c;工作到现在&#xff0c;差不多九个年头了。最近换工作&#xff0c;有一些沉淀的想法&#xff0c;分享一下我是在淮南读的大学&#xff0c;毕业后就到合肥工作了&#xff0c;直到现在。回过头看&#…

一、初识Qt 之 Hello world

一、初识Qt 之 Hello world 提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 初识Qt 之 Hello world文章目录 一、Qt 简介二、Qt 获取安装三、Qt 初步使用四、Qt 之 Hello world1.新建一个项目 总结 一、Qt 简介 C &#xf…

数据库系统概论(超详解!!!)第十节 过程化SQL

1.Transact-SQL概述 SQL(Structure Query Language的简称&#xff0c;即结构化查询语言) 是被国际标准化组织(ISO)采纳的标准数据库语言&#xff0c;目前所有关系数据库管理系统都以SQL作为核心&#xff0c;在JAVA、VC、VB、Delphi等程序设计语言中也可使用SQL&#xff0c;它是…

重生之我想写后端

Vue Element Plus 简单的响应式侧边栏 利用onMounted&#xff0c;初次加载页面的时候&#xff0c;为页面注册一个监听器。 当 ‘resize’ 事件发生时&#xff0c; 触发函数。 此函数里监听窗口大小&#xff0c;当窗口小于 500px 时&#xff0c;改变 isCollpase boolean 值。 …