第七天 |344.反转字符串 541. 反转字符串II 替换数字

news/2026/1/21 20:50:55/文章来源:https://www.cnblogs.com/ounijiangovo/p/19514030

第七天|

题目1 344.反转字符串

344.反转字符串 | 代码随想录

字符串基础操作! | LeetCode:344.反转字符串_哔哩哔哩_bilibili

笔记

为什么是O(1)的额外空间? 我的代码中使用了4个int变量,即额外空间是固定的,是常数,所以是O(1)

异或实现的swap

s[i] ^= s[j];
s[j] ^= s[i];
s[i] ^= s[j];

原理:首先知道异或的一些性质:a ^ a = 0(任何数与自己异或得到0) a ^ 0 = a(任何数与0异或得到自身) a ^ b = b ^ a

假设s[i] = a,s[j] = b

第一步:s[i] = a ^ b,s[j] = b

第二步:s[i] = a ^ b,s[j] = b ^ a ^ b = b ^ b ^ a = 0 ^ a = a

第三步:s[i] = a ^ b ^ a = a ^ a ^ b = b,s[j] = a交换完成

注意:这种方法有一个潜在风险:如果i == j(交换的是同一个位置) 会导致数值消失,全部变为0;

实操出现问题

代码/比较

class Solution {
public:void reverseString(vector<char>& s) {int len=s.size();for(int i=0,j=len-1;i<len/2;i++,j--){int tmp=s[i];s[i]=s[j];s[j]=tmp;}}
};

541. 反转字符串II

笔记:

步长为2k进行遍历。

实操出现问题:

reverse函数用于反转字符串: reverse(s.begin()+i,s.begin()+i+k);

reverse函数是左闭右开

代码/比较:

class Solution {
public:string reverseStr(string s, int k) {for(int i=0;i<s.size();i+=2*k){if(i+k<=s.size()){reverse(s.begin()+i,s.begin()+i+k);continue;}else{reverse(s.begin() + i, s.end());}}return s;}
};

替换数字

笔记:

很多数组填充类的问题,其做法都是先预先给数组扩容带填充后的大小,然后在从后向前进行操作。

这么做有两个好处:

  1. 不用申请新数组。
  2. 从后向前填充元素,避免了从前向后填充元素时,每次添加元素都要将添加元素之后的所有元素向后移动的问题。

实操出现的问题:

在赋值中leftright的移动:什么时候移动?情况一:left指针没有碰到数字:每一次赋值后无论是left还是right都要往后移动

情况二:left指针碰到了数字:此时left不需要移动,right每赋值一次向后移动;left在right完成一个“right”的赋值后再移动。

代码/比较:

#include <iostream>
using namespace std;
int main()
{string s;//输入的字符串cin>>s;int count=0;//用于计算多少个数字for(int i=0;i<s.size();i++){if(s[i]>='0'&&s[i]<='9')count++;}int len_before=s.size();//之前的长度s.resize(s.size()-count+count*6);//right指向新str,left指向旧strint left=len_before-1;int right=s.size()-1;//循环遍历整个数组,如果left碰上了数字,则right从右往左依次赋值rebmun;如果没有碰到数字,则将旧str的元素复制到新str中while(left!=right){if(s[left]>='0'&&s[left]<='9')//碰到数字{s[right--]='r';s[right--]='e';s[right--]='b';s[right--]='m';s[right--]='u';s[right--]='n';left--;}elses[right--]=s[left--];}cout<<s<<endl;}

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

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

相关文章

7款AI工具高效撰写学术论文的技巧与实例解析

工具核心特点速览 工具名称 核心优势 适用场景 数据支撑 aibiye 全流程覆盖降重优化 从开题到答辩的一站式需求 支持20万字长文逻辑连贯 aicheck 院校规范适配模板化输出 国内本硕博论文框架搭建 覆盖90%高校格式要求 秒篇 3分钟文献综述生成 紧急补文献章节 知…

Agentic AI社会责任:提示工程架构师的资源整合

知识金字塔构建者:Agentic AI社会责任与提示工程的资源整合艺术 1. 引入与连接:当AI学会“自主决策”,我们该如何教它“做个好人”? 1.1 一个真实的Agentic AI场景 早上7点,李奶奶的智能助手小安准时“醒来”——它先通过床头传感器读取了李奶奶的睡眠数据(昨晚醒了3次…

344. 反转字符串-day07

题目:344. 反转字符串 题目链接:https://leetcode.cn/problems/reverse-string/description/ 思路:就是将字符数组中的元素交换位置(从中间分开),例子:第1个后最后一个交换,第2个和倒数第二个交换 代码:点击查…

学术论文写作:7款AI工具实用技巧及案例演示

工具核心特点速览 工具名称 核心优势 适用场景 数据支撑 aibiye 全流程覆盖降重优化 从开题到答辩的一站式需求 支持20万字长文逻辑连贯 aicheck 院校规范适配模板化输出 国内本硕博论文框架搭建 覆盖90%高校格式要求 秒篇 3分钟文献综述生成 紧急补文献章节 知…

2026成都最新二手房装修企业top5评测!服务深度覆盖金牛区、新都区、青羊区、成华区等地优质品牌权威榜单发布,缔造理想居家环境.

随着二手房市场的持续火热,二手房装修需求日益增长,选择一家靠谱的装修公司至关重要。本榜单基于企业资质、设计实力、施工工艺、材料品质、服务保障五大维度,结合市场口碑与客户反馈,权威解析2026年五大二手房装修…

《实时渲染》第2章-图形渲染管线-2.3几何处理

几何处理阶段在GPU上完成顶点着色、投影、裁剪和屏幕映射,将模型从局部空间逐步转换至窗口坐标,为后续光栅化做准备。实时渲染 2. 图形渲染管线 2.3 几何处理 GPU上的几何处理阶段负责大多数每个三角形和每个顶点的操…

华为eNSP中USG6000防火墙web界面登录设置

防火墙USG6000V导入包 1. 导入包的获取下载链接&#xff1a;https://blog.csdn.net/IU131313/article/details/132792422&#xff08;感谢大佬&#xff09; 2.下载好导入包之后在ensp中在拓扑图上拉出USG6000V防火墙&#xff0c;点击FW&#xff0c;按照界面指示将导入包放入进…

咖啡果实成熟度数据集2359张VOC+YOLO格式

咖啡果实成熟度数据集2359张VOCYOLO格式数据集格式&#xff1a;VOC格式YOLO格式压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件JPEGImages文件夹中jpg图片总计&#xff1a;2359Annotations文件夹中xml文件总计&#xff1a;2359labels文件夹中txt文件总…

【开题答辩全过程】以 基于JAVA的宠物医院管理系统的设计为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

行列式求值

行列式求值 给定一个行列式,求它的值,对任意模数取模。 分析 一个小技巧可以避免精度问题(或者说任意模数下逆元存在性问题),考虑使用类似求最大公约数地碾转相除法,在消除某行的主元时消到取余后的值,再交换两…

2026年1月21日人工智能早间新闻

各位读者&#xff0c;早上好。今天是2026年1月21日&#xff0c;星期三。欢迎收看人工智能早间新闻。世界经济论坛2026年年会进入第三天&#xff0c;昨日&#xff0c;大会聚焦“绩效”与“能源”两大核心&#xff0c;对人工智能的全球竞争格局进行了一次现实的把脉。与此同时&am…

Spring AI Alibaba实战训练营-26 基于Spring AI+MCP SDK开发SQLite 聊天机器人应用的完整指南

文章目录 本期目标 一、开发环境准备 1.1 基础环境要求 1.2 获取项目代码 1.3 配置 API 密钥 二、项目核心组件解析 2.1 依赖管理(pom.xml) 2.2 数据库初始化 三、核心代码实现详解 3.1 MCP 客户端配置(Application.java) 3.2 工具回调注册机制 3.3 预定义问题 3.4 交互式聊…

AI生成B端管理后台实战经验分享:3个技巧总结

引言 做了几年B端产品,越来越觉得,管理后台才是产品的灵魂。当然,也是最容易让人头秃的那一块。不管是给内部用的OA、ERP系统,还是给客户用的SaaS后台,逻辑一复杂,页面数量就容易上涨。当项目赶进度的时候,产品…

[20260121]关于display_raw函数.txt

[20260121]关于display_raw函数.txt--//在查看表统计信息的字段最大以及最小值,经常会使用定义的函数display_raw,在tpt的desc11.sql脚本前面有一段该函数的定义以--//及说明。--//在生产系统我使用的脚本许多情况并…

大公司的采购流程是怎样的?一文讲清采购七大流程

谢邀。大公司的采购流程是怎样的&#xff1f;很多人对大公司采购的第一反应就是&#xff1a;慢、复杂、官僚。可能心里还在想&#xff1a;不就是买点东西吗&#xff1f;怎么要跑这么多流程&#xff0c;审批盖章、来回催单&#xff0c;搞得业务部门和采购都累坏了&#xff1f;其…

Excel常用单位

1、Excel列宽位是单元格可容纳标准字符数,如图标准字符就是Calibri11号,列宽是8.38个字符2、NPOI列宽,一个字符就是256个1/256,这里的256是对只有一个字符宽度的描述也就是npoi列宽的值,1/256就是npoi列宽的单位,…

搞定INT8量化ARM部署精度优化

&#x1f493; 博客主页&#xff1a;借口的CSDN主页 ⏩ 文章专栏&#xff1a;《热点资讯》 INT8量化在ARM部署中的精度优化&#xff1a;从挑战到突破 目录 INT8量化在ARM部署中的精度优化&#xff1a;从挑战到突破 引言&#xff1a;边缘计算的精度困局 现在时&#xff1a;ARM部…

深度学习毕设项目推荐-基于python-pytorch训练CNN模型对核桃的品质识别基于python-pytorch训练CNN模型对核桃的品质识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Vue国际化(i18n)完全指南:原理、实践与最佳方案

&#x1f30d; Vue国际化i18n完全指南&#xff1a;原理、实践与最佳方案&#x1f4cc; 为什么需要国际化&#xff1f;&#x1f3c6; Vue国际化插件推荐&#x1f50d; vue-i18n核心原理剖析1. 基本架构2. 核心实现机制3. 关键技术点&#x1f6e0;️ vue-i18n实战指南1. 安装与基…