代码随想录 Day18 字符串 | LC151 反转字符串中的单词 卡码网55 右旋字符串

四、反转字符串中的单词

题目:

力扣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) 额外空间复杂度的 原地 解法。

解题思路分析:


整体思路:

先将原字符串整体进行一次反转;

然后再将每个单词单独进行反转即可。

需要注意的就是删除掉多余的空格。

如果对反转操作十分熟悉,那么可以直接用库函数实现反转。

移除空格可以参考 双指针法移除元素:第一章:数组——移除元素(双指针)

解题思路如下:

  • 移除多余空格
  • 将整个字符串反转
  • 将每个单词反转

举个例子,源字符串为:"the sky is blue "

  • 移除多余空格 : “the sky is blue”
  • 字符串反转:“eulb si yks eht”
  • 单词反转:“blue is sky the”

去除多余空格的代码讲解:

int slow = 0;
for (int fast = 0; fast < chars.length; fast++) {//先用 fast 移除所有空格if (chars[fast] != ' ') {//在用 slow 加空格。 除第一个单词外,单词前面要加空格if (slow != 0) chars[slow++] = ' ';//fast 遇到空格或遍历到字符串末尾,就证明遍历完一个单词了while (fast < chars.length && chars[fast] != ' ')chars[slow++] = chars[fast++];}
}//此时slow指向的就是新数组的长度
char[] newChars = new char[slow];
System.arraycopy(chars, 0, newChars, 0, slow); 
return newChars;

在这里插入图片描述

题解:


在这里插入图片描述在这里插入图片描述

五、右旋字符串

题目:

卡码网55:右旋字符串

题目描述:

字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。
例如,对于输入字符串 “abcdefg” 和整数 2,函数应该将其转换为 “fgabcde”。

输入描述:

输入共包含两行,第一行为一个正整数 k,代表右旋转的位数。第二行为字符串 s,代表需要旋转的字符串。

输出描述:

输出共一行,为进行了右旋转操作后的字符串。

输入示例:

2
abcdefg

输出示例:

fgabcde

提示信息:

数据范围:
1 <= k < 10000,
1 <= s.length < 10000;

解题思路分析:


这道题和上面那道反转字符串中的单词思路很像。

可以先将字符串整体反转;

然后反转前k个字符;

最后反转后面的字符即可。

本题中,我们需要将字符串右移n位,字符串相当于分成了两个部分,如果n为2,符串相当于分成了两个部分,如图: (length为字符串长度)

在这里插入图片描述

右移n位, 就是将第二段放在前面,第一段放在后面,先不考虑里面字符的顺序,是不是整体倒叙就行了。如图:
在这里插入图片描述

此时第一段和第二段的顺序是我们想要的,但里面的字符位置被我们倒叙,那么此时我们在把 第一段和第二段里面的字符再倒叙一把,这样字符顺序就正确了。 如果:

在这里插入图片描述

其实,思路就是 通过 整体倒叙,把两段子串顺序颠倒,两个段子串里的的字符在倒叙一把,负负得正,这样就不影响子串里面字符的顺序了。

同样的,先反转子串,在整体反转也可以:

在这里插入图片描述

题解:


在这里插入图片描述

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

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

相关文章

Java基础第十课——类与对象(1)

前面二白的九讲属于Java基础方面的内容&#xff0c;总体来说偏基础和简单&#xff0c;能完成的操作也有限&#xff0c;有兴趣的同学可以写一写相关的管理系统&#xff0c;后面二白也会上传一些自己敲的小系统&#xff0c;下面就要开始Java面对对象的知识内容了&#xff0c;从这…

String类(2)

❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&…

应用程序无法正常启动0xc000007b, 解决方案(超简单)

1、问题 安装软件时候报错 应用程序无法正常启动(0xc000007b) 2、原因 主要是没有安装Microsoft Visual C 3、解决方法&#xff1a;下载 Microsoft Visual C 可再发行程序包 直接在Microsoft Learn官网下载 vcredist_x64.exe。 3.1、打开官网链接Microsoft Visual C 可再发…

OJ系统JavaScript Node标准输入输出(https://pintia.cn/)

const readline require("readline"); const rl readline.createInterface({input: process.stdin,output: process.stdout, }); const arr [];//储存数据 rl.on(line, function (line) {arr.push(line);} ); rl.on(close,function (){console.log(arr)//[ 1 5, 1…

小程序解析二维码:jsQR

1.了解jsQR jsQR是一个纯javascript脚本实现的二维码识别库&#xff0c;不仅可以在浏览器端使用&#xff0c;而且支持后端node.js环境。jsQR使用较为简单&#xff0c;有着不错的识别率。 2.效果图 3.二维码 4.下载jsqr包 npm i -d jsqr5.代码 <!-- index.wxml --> &l…

blender安装mmd并导入pmx,pmd文件

点击链接GitHub上下载这个&#xff0c;值得注意的是blender4.0以上版本暂时不支持&#xff0c;这里使用的是blender3.6版本GitHub - powroupi/blender_mmd_tools: mmd_tools is a blender addon for importing Models and Motions of MikuMikuDance. 复制当前内容 粘贴到当前…

如何了解数字化和信息化的区别?

在数字化浪潮席卷全球的今天&#xff0c;企业如何乘风破浪、实现转型升级&#xff1f; 数字化和信息化&#xff0c;这两个看似相似却各有千秋的概念&#xff0c;一直被人们拿来对比。 下面就来讲一讲我的理解&#xff1a; 从简单了说&#xff1a; “信息化”可以理解为传统数…

关于配置nginx的反向代理时出现的一些问题及解决方法

1.配置反向代理 &#xff08;1&#xff09;上传nginx.conf到/opt/nginx/conf/中&#xff0c;并覆盖。 #查看一下IP是否正确&#xff08;需要将文件中的IP改成自己的IP&#xff09; cat /opt/nginx/conf/nginx.conf &#xff08;2&#xff09;重启 cd /opt/nginx/sbin ./n…

Java二进制、八进制、十进制、十六进制转换

N进制转十进制 Integer.valueOf( str, N ) 方法把N进制的字符str转换成十进制 Integer.valueOf( str, N ) 方法等同于 Integer.parseInt( str, N ) 方法 // str 是字符串 // N 整数&#xff0c;指定字符串str是几&#xff08;N&#xff09;进制 Integer.parseInt(str, N) 例…

docker安装华为高斯-opengauss

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

每周编辑精选|COIG-CQIA 数据集上线、在线运行 ComfyUI 文生图工作流

为了填补高质量中文数据集的空白&#xff0c;中国科学院、零一万物、北京大学等 10 家机构联合开发出了 COIG-CQIA 数据集。令人惊讶的是&#xff0c;该数据集中「弱智贴吧」的数据质量&#xff0c;居然大幅度超过知乎、豆瓣、思否等知识社区。 COIG-CQIA 数据集现已上线 hyper…

为何进口的主食冻干大量养猫达人推荐?五大优质主食冻干养猫必选

不少新手养猫人都会好奇&#xff0c;为何进口主食冻干的价格如此高昂&#xff0c;却仍受到众多养猫达人的青睐&#xff1f;与国产主食冻干相比&#xff0c;进口产品价格高出3-4倍&#xff0c;那么这高昂的价格背后&#xff0c;进口主食冻干究竟物有所值&#xff0c;还是只是一个…

web安全-SSH私钥泄露

发现主机 netdiscover -r 192.168.164.0 扫描端口 看到开放80和31337端口都为http服务 浏览器访问测试 查看80端口和31337端口网页和源代码并无发现有用信息 目录扫描 扫描出80端口并无有用信息 扫描31337端口 发现敏感文件robots.txt和目录.ssh 访问敏感文件和目录 /.ss…

GEEKCTF 2024

Welcome flag{welcome_geekers}

nginx 如何对用户屏蔽网站首页但是对蜘蛛开放

使用 Nginx 的 if 指令结合 $http_user_agent 变量来实现条件判断。不过&#xff0c;请注意&#xff0c;Nginx 官方文档通常建议避免在配置中过度使用 if 指令&#xff0c;因为它可能会导致不可预测的行为&#xff0c;尤其是在复杂的配置中。然而&#xff0c;对于简单的用例&am…

【统计建模选题】大数据和人工智能背景下新能源汽车某方面的统计研究

针对新能源汽车行业&#xff0c;在大数据和人工智能背景下的统计研究是一个前沿且具有实际意义的研究方向。为了确保研究主题不偏离“大数据与人工智能”的主题框架&#xff0c;同时选取合适的指标进行研究&#xff0c;以下是一些建议&#xff1a; 1.体现大数据与人工智能主题…

商城系统个性化功能——可视化编辑

商城系统的普及化&#xff0c;让很多中小企业和商家也开始接触商城系统管理&#xff0c;之前在使用第三方平台时&#xff0c;大多数商城系统的样式都是固定的&#xff0c;商城页面也不能按照自己的想法去调整。 现在&#xff0c;随着商城系统越来越普遍&#xff0c;商城系统功…

行列视在行业中占据的优势

行列视&#xff08;RCV&#xff09;生产数据应用系统具有多种优势&#xff0c;这些优势使得它在行业中能够脱颖而出。以下是一些主要的优势&#xff1a; 1. 指标数据快速治理&#xff1a;行列视能够实现指标的快速治理、统一管理、共享、应用及分析。通过采用多种方式如从上至…

05—面向对象(上)

一、面向对象编程 1、类和对象 &#xff08;1&#xff09;什么是类 类是一类具有相同特性的事物的抽象描述&#xff0c;是一组相关属性和行为的集合。 属性&#xff1a;就是该事物的状态信息。行为&#xff1a;就是在你这个程序中&#xff0c;该状态信息要做什么操作&#x…

加固系统安全,防范ssh暴力破解之Fail2Ban

你是否还在担心你的服务器被攻击&#xff1f;你是否还在担心你的博客的安全&#xff1f;你是否还在担心你的隐私&#xff1f;别急fail2ban它来了&#xff0c;它可以解决你的一切问题。 Fail2Ban 是什么&#xff1f; 现在让我们一起来认识一下今天的主角 – Fail2Ban。简单说来…