每日一题 --- 反转字符串中的单词[力扣][Go]

反转字符串中的单词

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

提示:

  • 1 <= s.length <= 104
  • s 包含英文大小写字母、数字和空格 ' '
  • s至少存在一个 单词

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

方法一:

遍历数组然后遇见空格就将前一个单词加入结果集,如果有多个空格其余空格就跳过。

func reverseWords(s string) string {s = strings.Trim(s, " ")l := 0res := ""for i, i2 := range s {if i2 == ' ' {if i == l {l = i + 1continue}res = " " + s[l:i] + resl = i + 1}}res = s[l:] + resreturn res
}

时间复杂度O(n),空间复杂度O(n)

因为Go语言string不能更改的特性,所以不存在原地修改。

方法二:

解题思路:代码随想录

func reverseWords(s string) string {// 删除前后多余空格s = strings.Trim(s, " ")// 清除中间多余空格bs := []byte(s)l, f := 0, 0num := 0for f < len(bs) {if bs[f] == ' ' {f++num++if num == 1 {bs[l] = ' 'l++}} else {bs[l] = bs[f]l++f++if num != 0 {num = 0}}}bs = bs[:l]fmt.Println(string(bs))// 反转整个字符串reverse(bs)// 反转每个单词lift, right := 0, 0for right < len(bs) {if bs[right] == ' ' {reverse(bs[lift:right])lift = right + 1}right++}reverse(bs[lift:right])return string(bs)
}func reverse(bs []byte) {l := 0r := len(bs) - 1for l < r {bs[l], bs[r] = bs[r], bs[l]l++r--}
}

时间复杂度O(n),虽然在for循环里进行了次反转操作,但以为单词长度一般不会过长,可视为常数,空间复杂度O(n)

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

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

相关文章

Zabbix6 - Centos7源码编译部署HA高可用集群手册

Zabbix6 - Centos7源码编译部署HA高可用集群手册 HA高可用集群 总所周知,在我们IT运维的圈圈中,HA高可用集群服务算是逼格最高的吧也是运维里保障力度最大的环境。 HA是HighlyAvailable缩写,是双机集群系统简称,提高可用性集群,是保证业务连续性的有效解决方案,一般有两个…

GitHub开源项目权限管理-使用账号和个人令牌访问

1.打开后台账号设置 2.找到左下角的Developer settings 3.找到Personal access tokens 的 Tokens(classic) 4.选择创建新证书 5.填写证书信息 6.点击生成证书&#xff0c;复制证书并且保存起来&#xff08;血泪教训&#xff0c;证书只会在创建时显示一次&#xff0c;以后就再也…

用于 Linux 运维的专门发行版,以及工具

Linux 运维必备的13款实用工具 https://blog.csdn.net/m0_46426259/article/details/121681374 2023 适用于安全专业人士的十款 Linux 发行版 https://www.sysgeek.cn/linux-distributions-for-security/#google_vignette 6个用于黑客攻击的最佳Linux发行版 https://zhuan…

WebView的使用详解

WebView 现在Android开发基本都会用到WebView,所以自己准备系统的整理下,供自己学习之用. 1.简介 WebView是一个基于webkit引擎、展现web页面的控件。 Android的Webview在低版本和高版本采用了不同的webkit版本内核&#xff0c;4.4后直接使用了Chrome。 2.作用 显示和渲染…

Django安装及第一个项目

1、安装python C:\Users\leell>py --version Python 3.10.6 可以看出我的环境python的版本3.10.6&#xff0c;比较新 2、 Python 虚拟环境创建 2.1 官网教程 目前&#xff0c;有两种常用工具可用于创建 Python 虚拟环境&#xff1a; venv 在 Python 3.3 及更高版本中默…

安全的内网通讯软件,WorkPlus定制化 IM/办公门户解决方案

如今处于数字化转型的“加速期”&#xff0c;政企正经历着一场数字化迭代升级的时代浪潮。而不少企业都已具备了数字化管理的意识&#xff0c;数字化应用场景也在全面推开。WorkPlus不断推动信息技术与企业业务深度融合&#xff0c;作为安全的内网通讯软件&#xff0c;为企业提…

[RoarCTF 2019]Online Proxy --不会编程的崽

这几天也是ctf做得有点头疼了。好些序列化的题没碰&#xff0c;一直做些sql注入类的题目。闲来无事&#xff0c;在更一次sql注入吧。 整个页面就这点信息。首先想想为什么他能获取你的ip。猜测是数据包X-Forwarded-For。 它还输出上次访问页面客户端的ip。很明显了&#xff0c…

低功耗、低成本 NAS/公共文件夹 的可能性

使用现状&#xff1a;多台工作电脑&#xff0c;家里人手一台&#xff0c;还在两个住处 有好几台工作电脑&#xff0c;不同电脑不同OS有不同的用途&#xff0c;最大的问题就是各个电脑上文件的同步问题&#xff0c;这里当然就需要局域网里的公共文件夹&#xff0c;在NAS的问题上…

GenICam-GenApi简介

EMVA 1288标准之GemICam-GenApi学习与解读 背景介绍 当前相机不仅用于传输图像&#xff0c;还打包了越来越多的功能。这就导致相机的编程接口越来越复杂。 GenICam的目标是为所有类型的相机提供一个通用的编程接口&#xff0c;无论相机使用何种接口技术&#xff0c;或者实现…

vue3从精通到入门6:v-memo指令

v-memo是一个用于优化组件渲染性能的指令。它允许你根据某个条件来缓存组件的虚拟 DOM 树&#xff0c;从而在条件没有变化时避免不必要的重新渲染。这对于那些接收大量 props 且渲染成本较高的组件来说非常有用。 用法 v-memo 指令接受一个表达式或一个数组作为参数&#xff0…

JVM实战之性能调优[2](线程转储案例认识和分析)

文章目录 版权声明案例1&#xff1a;CPU占用率高问题问题描述解决思路补充内容 案例2&#xff1a;接口响应时间长问题问题描述解决思路Arthas trace命令Arthas watch命令解决问题 案例3&#xff1a;定位偏底层性能问题问题描述解决思路&#xff1a;Arthas火焰图问题解决 案例4&…

论文阅读,Accelerating the Lattice Boltzmann Method(五)

目录 一、Article:文献出处&#xff08;方便再次搜索&#xff09; &#xff08;1&#xff09;作者 &#xff08;2&#xff09;文献题目 &#xff08;3&#xff09;文献时间 &#xff08;4&#xff09;引用 二、Data:文献数据&#xff08;总结归纳&#xff0c;方便理解&am…

nimbus-jose-jwt库简单使用 公私钥字符串互相转换

nimbus-jose-jwt库简单使用 对称密钥签名非对称密钥对公私钥与字符串互相转换生成密钥对公私钥转字符串字符串转公私钥公钥字符串转公钥对象私钥字符串转私钥对象 maven坐标 <dependency><groupId>com.nimbusds</groupId><artifactId>nimbus-jose-jwt&…

大话设计模式之原型模式

原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;它用于创建对象的复制&#xff0c;同时又能保持对象的封装。原型模式通过复制现有对象的方式来创建新的对象&#xff0c;而无需知道具体创建过程的细节。 在原型模式中&#xff0c;通常会有…

专题:一个自制代码生成器(嵌入式脚本语言)之对象模型

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 专题&#xff1a;一个自制代码…

使用Python进行双色球选号

在这篇博客中&#xff0c;我们将介绍如何使用Python编写一个双色球选号的小程序。双色球是一种流行的彩票游戏&#xff0c;选号由6个红球号码和1个蓝球号码组成&#xff0c;红球号码范围是1到33&#xff0c;蓝球号码范围是1到16。 程序设计思路 我们的程序将使用Python的rand…

Windows系统搭建Oracle结合内网穿透实现公网访问本地数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle&#xff0c;是甲骨文公司的一款关系…

3.28 c++

算数运算符 #include <iostream> using namespace std; class Num {int rel; //实部int vir; //虚部 public:Num():rel(2),vir(1){}Num(int rel,int vir):rel(rel),vir(vir){}Num &operator(const Num &other){cout << "Num的拷贝赋值函数"…

Linux(CentOS)/Windows-C++ 云备份项目(结项,项目总结)

项目名称&#xff1a;云备份系统 项目功能&#xff1a; 搭建云备份服务器和客户端。 客户端程序运行在Windows下&#xff0c;将指定的目录下的文件备份到服务器上&#xff0c;并且支持浏览器下载&#xff0c;查看。 其中下载支持断点续传&#xff0c;服务器对备份文件进行热…

java ssh 电影院购票管理系统eclipse开发mysql数据库MVC模式java编程网页设计

一、源码特点 JSP ssh 电影院购票管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。开发环境为TOMCAT…