代码随想录算法训练营第8天| leetcode 344反转字符串 541反转字符串 剑指Offer 05替换空格 151翻转字符串里的单词 剑指Offer58-II.左旋转字符串

【代码随想录训练营】【Day08】第四章|字符串|344.反转字符串|541. 反转字符串II|剑指Offer 05.替换空格|151.翻转字符串里的单词|剑指Offer58-II.左旋转字符串 阅读详情

● 344.反转字符串

题目链接: https://leetcode.cn/problems/reverse-string/

解题思路:

遍历字符串的每一个字符, 双指针 分别指向 字符串的头部和尾部,交换 头尾部的位置,实现字符串的反转.

参考答案:

class Solution {

public void reverseString(char[] s) {

int left=0;

int right=s.length-1;

while (left<right){

char temp = s[left];

s[left]=s[right];

s[right]=temp;

left++;

right--;

}

}

}

● 541. 反转字符串II

题目链接: https://leetcode.cn/problems/reverse-string-ii/

解题思路:

每 2k,循环执行一次.

[0 , k] 前k个元素(或者少于k个),进行反转.

[k , 2k]第k个到第2k个(如果存在的话),直接拼接.

定义两个变量firstK , secondK ,分别指向 对应k个元素的头部和尾部, 字符串长度小于尾部 k 或者 2k的话,k和2k的取值为 数组的长度. 否则在字符串切割 substring 的时候,会引起索引 越界.

当 每次循环开始的起始位置,小于字符串长度,就可以继续循环.

参考答案:

class Solution {

public String reverseStr(String s, int k) {

StringBuffer stringBuffer = new StringBuffer();

int start = 0;

int length = s.length();

while (start < length) {

int firstK = start + k;

int secondK = start + 2 * k;

firstK = firstK > length ? length : firstK;

secondK = secondK > length ? length : secondK;

// 处理 前k

String str1 = s.substring(start, firstK);

stringBuffer = stringBuffer.append(new StringBuffer(str1).reverse());

// 处理 k 到 2k 之间

if (secondK > firstK) {

String str2 = s.substring(firstK, secondK);

stringBuffer = stringBuffer.append(str2);

}

start += 2 * k;

}

return stringBuffer.toString();

}

}

● 剑指Offer 05.替换空格

题目链接: https://leetcode.cn/problems/ti-huan-kong-ge-lcof/

解题思路:

定义一个 stringBuffer ,遍历字符串的每一个字符, 遇到 空格,拼接 append "%20" ;\

遇到非空格的字符,直接拼接.

参考答案:

class Solution {

public String replaceSpace(String s) {

StringBuffer stringBuffer = new StringBuffer();

char[] chars = s.toCharArray();

for (char char1 : chars) {

if(char1==' '){

stringBuffer.append("%20");

}else {

stringBuffer.append(char1);

}

}

return stringBuffer.toString();

}

}

● 151.翻转字符串里的单词

题目链接: https://leetcode.cn/problems/ti-huan-kong-ge-lcof/

解题思路:

先用trim 去掉 字符串 头尾的空格.

用" "空格切割字符串,得到字符串数组.

遍历数组,遇到空格,直接跳过;

遇到非空格,直接拼接, 同时拼接上一个空格, 遍历到最后一个非空格字符串的时候,不在拼接 空格.

参考答案:

class Solution {

public String reverseWords(String str) {

// 这个方法让我深刻理解了怎么做切割"

str = str.trim();

String[] split = str.split(" ");

StringBuffer stringBuffer = new StringBuffer();

for (int i = split.length - 1; i >= 0; i--) {

if ( split[i].equals("")) {

continue;

} else {

if (i != 0) {

stringBuffer.append(split[i]);

stringBuffer.append(" ");

} else {

stringBuffer.append(split[i]);

}

}

}

return stringBuffer.toString();

}

}

● 剑指Offer58-II.左旋转字符串

题目链接: https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/

解题思路:

利用stringBuffer 重新完成拼接, 遍历字符串里的每一个字符,先拼接不需要左旋转的 右边的元素,再拼接左边的元素.

参考答案:

class Solution {

public String reverseLeftWords(String str, int n) {

char[] chars = str.toCharArray();

StringBuffer stringBuffer = new StringBuffer( str );

for (int i = n; i < chars.length; i++) {

stringBuffer.setCharAt(i - n, chars[i]);

}

for (int i = 0; i < n; i++) {

stringBuffer.setCharAt(i + chars.length - n, chars[i]);

}

return stringBuffer.toString();

}

}

保姆级避坑指南:在Ubuntu 22.04上从零编译Autoware.universe(含ROS2 Humble和CUDA配置) 本文提供了一份详细的Autoware.universe编译指南,涵盖Ubuntu 22.04系统优化、ROS2 Humble安装避坑、CUDA配置及Demo运行技巧。通过分步操作和实战经验,帮助开发者高效完成环境搭建,避免常见错误,提升自动驾驶开发效率。 阅读详情

相关推荐

手眼标定搞定了,手眼矩阵不知道怎么用?快戳!!

手眼标定得到手眼矩阵到底该咋用? 大家好,我是小鱼。上几期给大家分享了关于手眼标定的方法,如果还有不清楚如何让进行手眼标定的同学可以参考下面的文章: 机器人手眼标定都能搞不定?快戳,最好用的手眼标定库!!! 很多同学做完了手眼标定之后得到了手眼矩阵,但是不知道怎么用于程序当中去,还有很多同学搞不清楚各个坐标系之间的关系,今天小智就给大家讲讲手眼矩阵的使用问题。 一、手眼矩阵为什么会长的不一样? 做完手眼标定,得到的手眼矩阵,有可能会长的不一样,这是因为旋转变换是有很多种表示方法的。 1.旋转的表

生活不止眼前的苟且 5344

@代码随想录算法训练营第8天 | LeetCode344.反转字符串,541. 反转字符串II,剑指Offer 05.替换空格 151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串

代码随想录算法训练营第8天 | LeetCode344.反转字符串,541. 反转字符串II,剑指Offer 05.替换空格 151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串。

weixin_46724054的博客 116

SAP S4业务伙伴(BP)实战指南:从角色分配到数据同步的完整流程

本文详细解析了SAP S4业务伙伴(BP)功能,从基础概念到实战操作,涵盖角色分配、数据同步及常见问题排查。通过BP机制,企业可高效管理客户、供应商等多重身份,实现数据共享和动态切换,显著提升主数据管理效率。特别适合SAP实施顾问和ERP管理员参考。

y2z3a4b5c的博客 870

代码随想录算法训练营第8天| LeetCode 344.反转字符串 541. 反转字符串II剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串

【代码】代码随想录算法训练营第8天| LeetCode 344.反转字符串 541. 反转字符串II剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串。

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒 245

学习Ultralytics (下载)

Ultralytics由创立,最初是为了简化目标检测模型的开发和应用,专注于构建高效、易用、性能卓越的深度学习框架。其主要产品之一是 YOLO 系列模型,尤其是最新的YOLOv5和YOLOv8,因其在精度、速度和可扩展性方面的出色表现而广受欢迎。

2301_76846375的博客 2865

千兆以太网PHY设计:PCB原理图完整示例

深入解析千兆以太网PHY电路设计要点,提供完整的PCB原理图设计实例,帮助工程师掌握高速信号布局与电源去耦等关键技术,提升设计稳定性与信号完整性。

weixin_30633869的博客 634

代码随想录算法训练营第八天 | 344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串

对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。我们将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒序了,那么再把单词反转一下,单词不就正过来了。字符串也是一种数组,所以元素在内存中是连续分布,可以使用双指针的方法来解决这个问题。最后就可以达到左旋n的目的,而不用定义新的字符串,完全在本串上操作。举个例子,源字符串为:"the sky is blue "例如 :示例1中 输入:字符串abcdefg,n=2。

niubimei666的博客 2475

从圆形到椭圆:CenterNet中高斯热图半径的自适应优化策略

本文深入探讨了CenterNet目标检测模型中高斯热图生成策略的优化,针对传统圆形高斯核在处理长宽比差异大目标时的局限性,提出了自适应椭圆高斯核的解决方案。通过数学推导和代码实战,详细阐述了如何根据目标边界框尺寸动态计算椭圆长短轴半径,生成更贴合目标几何形状的热图监督信号,从而有效提升模型,尤其是对无人机、车辆等不规则目标的定位精度。

alice7model的博客 985

代码随想录算法训练营第8天|344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

如果库函数仅仅是 解题过程中的一小部分,并且你已经很清楚这个库函数的内部实现原理的话,可以考虑使用库函数。这道题和上一道题类似,前n个字符可以看做是一个单词,剩余的字符看做是另一个单词,本题也是将单词的顺序反转。“满2k个字符”和“剩余字符小于2k但大于等于k个”就翻转前k个字符,这两个可以写在一个条件里,也就是。对于数组填充型题目,都可以预先给数组扩充到填充后的大小,然后再从后向前进行操作。如果题目关键的部分直接用库函数就可以解决,建议不要使用库函数。142.环形链表II。

wx_xxxx的博客 1695

1、JMP脚本编程全面指南:从基础到高级应用

本博客全面介绍了JMP脚本编程的各个方面,从JMP基础和JSL入门,到数据类型、数据结构、编程方法、数据表操作、图形与三维场景脚本,再到应用程序创建与扩展功能。内容涵盖脚本工具使用、常见任务实现、兼容性说明及未来发展趋势,旨在帮助用户掌握JMP脚本语言的强大功能,提升数据分析的自动化与定制化能力。适合从初学者到高级用户的深入学习与实践参考。

flink9streamer的博客 266

彻底解决Win11锁屏界面黑屏或者图片不变化

windows锁屏后黑屏

renkai721的专栏 1万+

秋招算法备战第8天 | 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

今天的题目整体比较简单,比较重要的收获是python的切片操作鲁棒性很强,可以省去很多的条件检查

weixin_40951932的博客 1763

Python 爬虫教程:财经新闻实时抓取(最新资讯 + 关键词提取)

在当今信息爆炸的时代,财经新闻的实时获取对于投资者、研究人员以及普通大众来说都具有重要的价值。通过 Python 爬虫技术,我们可以高效地抓取财经新闻,并提取其中的关键信息,以便更好地进行数据分析和决策支持。本文将详细介绍如何使用 Python 编写一个财经新闻实时抓取系统,并结合关键词提取技术,帮助读者快速掌握 Python 爬虫的核心技能。

yansideyucsdn的博客 1049

代码随想录算法训练营Day8|Leetcode344反转字符串、541反转字符串II、剑指Offer05替换空格、151反转字符串里的单词、剑指Offer58-II左旋转字符串

Day8打卡!今日感想:今天的解题思路理解起来还可以,后两个题需要重点复习一下~💪

m0_60979177的博客 1942

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

代码随想录训练营第8天|LeetCode :344.反转字符串、 541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

第8天

qq_70244454的博客 2085

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

代码随想录算法训练营第八天| LC344. 反转字符串、LC541. 反转字符串II、剑指offer 05. 替换空格、LC151. 翻转字符串里的单词、剑指Offer 58-II. 左旋转字符串

代码随想录算法训练营

qq_54892503的博客 2666

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

【代码】代码随想录算法训练营第七天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串。

Hsusan的博客 443

代码随想录算法训练营第八天 | 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

代码随想录算法训练营第八天 | 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

方可申不翘二郎腿的博客 228

代码随想录算法训练营第8天|344.反转字符串,541. 反转字符串II,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串

力扣,字符串

m0_75237738的博客 1954

代码随想录训练营第八天|344.反转字符串、541.反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer 58-II.左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。为减少空间的浪费,先计算出空格的个数,精准定义替换后数组的大小,时间复杂度仍是O(n)。每隔2k个反转前k个,尾数小于等于k个时候全部反转,尾数大于k个还是翻转前k个。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。

weixin_47978786的博客 434

_7LeetCode代码随想录算法训练营第七天-C++字符串 | 344.反转字符串、541.反转字符串II、剑指Offer05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转

_7LeetCode代码随想录算法训练营第七天-C++字符串 | 344.反转字符串、541.反转字符串II、剑指Offer05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

Jasmine-Lily的博客 442

代码随想录算法训练营第八天|● 344.反转字符串● 541. 反转字符串II● 剑指Offer 05.替换空格● 151.翻转字符串里的单词● 剑指Offer58-II.左旋转字符

代码随想录算法训练营第八天|● 344.反转字符串● 541. 反转字符串II● 剑指Offer 05.替换空格● 151.翻转字符串里的单词● 剑指Offer58-II.左旋转字符

weixin_44565532的博客 2984

代码随想录训练营D8-字符串篇 p1 | (344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

java都是“值传递”,关键看这个值是什么,简单变量就是复制了具体值,引用变量就是复制了地址。建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数。建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。1.纠正只要有for循环,就++i的思路,是可以 i += 2*k的。建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。

weixin_44205711的博客 538

代码随想录算法训练营第八天|LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串。

LeetCode 344.反转字符串、LeetCode 541. 反转字符串II、LeetCode 剑指Offer 05.替换空格、LeetCode 151.翻转字符串里的单词、LeetCode 剑指Offer58-II.左旋转字符串解法。

m0_74294107的博客 1107

字符串 part01:344.反转字符串,541. 反转字符串II,剑指Offer 05.替换空格,151.翻转字符串里的单词*,剑指Offer58-II.左旋转字符串

区别于反转链表:字符串可以看作是字符的数组,反转数组可以直接交换值,链表是逐一修改指向。因为新数组是从后往前填充的,所以需要从旧数组末尾开始移动,去判断新数组该填什么值。题意:每2k个字符,反转它的前k个字符;如果不够k个,就全部反转。先反转前k位,再反转剩余部分,最后反转整个字符串。和反转链表有什么区别?

WinstonJQ的博客 538

代码随想录算法训练营第八天 | 344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词

代码随想录算法训练营第八天 | 344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词

buguacode的博客 259
上一篇: 代码随想录算法训练营第7天| leetcode ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和
樊城太守
博客等级 码龄5年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值