day8字符串part01

总结

反转问题要活用双指针法,有效减少额外空间的使用

344.反转字符串
● 541. 反转字符串II
● 卡码网:54.替换数字
● 151.翻转字符串里的单词
● 卡码网:55.右旋转字符串

344.反转字符串

/*344. 反转字符串简单
提示编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。*/class Solution_344 {public:void reverseString(vector<char>& s) {int left = 0;int right = s.size() - 1;while (left < right){char temp = s[left];s[left] = s[right];s[right] = temp;left += 1;right -=1;}}
};

● 541. 反转字符串II

/*541. 反转字符串 II
简单给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。*/
#include <algorithm>
class Solution_541 {public:/** 循环步长改为2k就可以*/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);} else {reverse(s.begin() + i, s.end());}}return s;}
};

● 卡码网:54.替换数字

/*54. 替换数字(第八期模拟笔试)
时间限制:1.000S  空间限制:128MB
题目描述给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。
输入描述输入一个字符串 s,s 仅包含小写字母和数字字符。
输出描述打印一个新的字符串,其中每个数字字符都被替换为了number输入示例
a1b2c3输出示例
anumberbnumbercnumber提示信息
数据范围:
1 <= s.length < 10000。*//** 数组填充类的问题可以通过扩充数组,并从后向前填充的方法解决,好处* 1.不用额外申请空间* 2.避免从前向后填充需要移动太多元素*/class Solution_kama_54 {public:string replaceNumber(string s) {string res;for (auto i : s) {if (i >= 'a' && i <= 'z')res.append(1, i);else {res.append("number");}}return res;}string replaceNumber_double_pionts(string s) {int num_count = 0;for (auto i : s) {if (i < 'a' || i > 'z')num_count += 1;}s.resize(s.size() + (5 * num_count));int left = s.size() - 1 - (5 * num_count);int right = s.size() - 1;while (left >= 0){if(isalpha(s[left])){s[right] = s[left];right -= 1;left -= 1;} else{s[right--] = 'r';s[right--] = 'e';s[right--] = 'b';s[right--] = 'm';s[right--] = 'u';s[right--] = 'n';left -= 1;}}return s;}
};

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

/*
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) 额外空间复杂度的 原地 解法。*/
#include <algorithm>
class Solution_151 {public:string reverseWords(string s) {//去除多余空格int fast = 0;int slow = 0;
#if 0//去除前导空格while (s.size() > 0 && s[fast] == ' ' && fast < s.size()) {fast += 1;}//去除两个单词间有多余的空格for (; fast < s.size(); ++fast) {if (s[fast] == ' ' && fast + 1 < s.size() && s[fast] == s[fast + 1]) {continue;} else {s[slow] = s[fast];slow += 1;}}if (s[slow - 1] == ' '){//去除尾随空格s.resize(slow - 1);} elses.resize(slow);
#else//优化方法,去除所有空格,加上单词间的空格while (fast < s.size()){if(s[fast] != ' '){if(slow > 0)//第一个单词前不加s[slow++] = ' ';//加上单词间的空格while (fast < s.size() && s[fast] != ' '){//s[slow++] = s[fast++];}} elsefast += 1;}s.resize(slow);#endif//整体反转fast = 0;slow = s.size() - 1;while (fast < slow){swap(s[fast], s[slow]);//也可创建临时变量或者位运算实现fast += 1;slow -= 1;}//反转单词int count = 0;for(int i = 0; i < s.size(); ++i){if(s[i] == ' '){reverse(s.begin() + i - count, s.begin() + i);//整体反转的局部使用count = 0;} elsecount += 1;}reverse(s.end() - count, s.end());//反转最后一个单词return s;}
};

● 卡码网:55.右旋转字符串

/*55. 右旋字符串(第八期模拟笔试)*
时间限制:1.000S  空间限制:128MB题目描述字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"。输入描述输入共包含两行,第一行为一个正整数 k,代表右旋转的位数。第二行为字符串 s,代表需要旋转的字符串。
输出描述输出共一行,为进行了右旋转操作后的字符串。
输入示例
2
abcdefg输出示例
fgabcde提示信息
数据范围:
1 <= k < 10000,
1 <= s.length < 10000;*/class Solution_kama_55 {public:string stringRightReplace(string s, int k) {int left = 0;int right = s.size() - 1;while (left < right){swap(s[left++], s[right--]);}left = 0;right = k - 1;while (left < right){swap(s[left++], s[right--]);}left = k;right = s.size() - 1;while (left < right){swap(s[left++], s[right--]);}return s;}
};

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

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

相关文章

VirtuoZo全数字摄影测量系统介绍

VirtuoZo&#xff0c;这一名字的背后蕴含着强大的技术与创新。它是由武汉大学遥感信息工程学院在张祖勋院士的主持下&#xff0c;经过十几年的努力研制成功的全数字化摄影测量系统。该系统不仅仅是一个技术产品&#xff0c;更是中国摄影测量领域的一次重大突破&#xff0c;标志…

jquery 实现倒计时

$(".tableText").click(function () { var time 60; var timer setInterval(function(){ time--; $(".tableText").text("&#xff08;"time"秒&#xff09;重发"); if(time0){ clearI…

工业垃圾打包机液压比例阀放大器

液压打包机的种类很多&#xff0c;我们生活中常见的是废纸打包机、金属打包机、纸箱打包机、玉米茎打包机等。然而&#xff0c;牙齿所有的打包机都有他的不同用法。除了我们生活中常见的以外&#xff0c;还有很多其他种类的打包机。让我介绍几件事。一种是捆 绑式打包机设备&am…

Spring事务:7种传播方式、4种隔离级别

Spring事务的代码承接jdbcTemplate的 文章目录 一、事务1.1 注解配置1.2 注解处理事务1.3 xml处理事务配置 二、传播方式三、事务的隔离级别 一、事务 不可分割的一系列操作。要么 全执行成功。要么 如果一个不成功&#xff0c;则全部不成功。 处理的事务的时候&#xff0c;成…

QT——第一个项目(HelloWorld)

QT——第一个项目&#xff08;HelloWorld&#xff09; 通过控件创建通过代码的方式实现对象树自己观察 我们之前对QT有了一定的了解&#xff0c;今天我们要用QT来写一段经典代码&#xff1a;HelloWorld。如果还没有看过前两次QT初识的小伙伴可以点击这里&#xff1a; https://b…

CentOS安装MeterSphere并实现无公网IP远程访问本地测试平台

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…

沉浸又护眼!观影爱好者的最佳CP“星光S1”4月6日开售

据悉&#xff0c;海信激光电视将在4月6日举行线上发布会。除3月已经开售、配备可折叠屏幕的星光S1 100英寸外&#xff0c;本次发布会还将发布星光S1 75英寸、80英寸、88英寸全系版本&#xff0c;为不同用户实现院线级家庭观影体验。 高色域&#xff0c;一直是新一代显示技术的…

Flux 和 Mono区别:并发并行同步异步区别

Flux 和 Mono区别 在工作中&#xff0c;看到导师写项目的时候用到了Flux和Mono。知识盲区了。随后去查了相关的技术信息。很遗憾说的有点太官方了。没有看懂。中午就餐之后&#xff0c;就问导师这两个是什么意思&#xff0c;以及什么区别。废话不多说&#xff0c;总结一下&…

每日一练 | 华为认证真题练习Day213

1、下面哪些OSPF状态迁移是可能的&#xff08;多选&#xff09; A. DOWN->INIT B. DOWN->2-WAY C. LOADING->FULL D. INIT->2-WAY 2、如果需要在某网段上进行快速失效检测机制&#xff0c;则在下列可能实现的配置方法中&#xff0c;描述错误的是:&#xff08;多…

LeetCode - 1702. 修改后的最大二进制字符串

文章目录 解析AC CODE 题目链接&#xff1a;LeetCode - 1702. 修改后的最大二进制字符串 解析 详细题解&#xff1a;贪心&#xff0c;简洁写法&#xff08;Python/Java/C/Go/JS/Rust&#xff09; 思路很牛b。 简单来说我们需要想办法将0配对&#xff0c;将其变为10&#xff0…

K8S:常用资源对象操作

文章目录 一、使用Replication Controller(RC)、Replica Set(RS) 管理Pod1 Replication Controller&#xff08;RC&#xff09;2 Replication Set&#xff08;RS&#xff09; 二、Deployment的使用1 创建2 滚动升级3 回滚Deployment三、 Pod 自动扩缩容HPA1 使用kubectl autosc…

React + three.js 3D模型骨骼绑定

系列文章目录 React 使用 three.js 加载 gltf 3D模型 | three.js 入门React three.js 3D模型骨骼绑定 项目代码(github)&#xff1a;https://github.com/couchette/simple-react-three-skeleton-demo 项目代码(gitcode)&#xff1a;https://gitcode.com/qq_41456316/simple-r…

多时间尺度源储荷协调调度策略:储能电站特性分布与电网接入

《考虑特性分布的储能电站接入的电网多时间尺度源储荷协调调度策略》&#xff08;作者&#xff1a;金力等&#xff09;这标题听起来有点拗口&#xff0c;但其实它讲的是关于电网里储能电站怎么更高效地工作的策略。 文章的背景和目的是基于当前电网面临的多时间尺度调度的挑战。…

spring(7)-事务

事务 1、 事务概述2、spring对事务的支持2.1 spring事务管理API2.2 事务属性2.2.1 事务传播行为2.2.2 案例2.2.2.1 REQUIRED2.2.2.2 REQUIRES_NEW2.2.2.3 NESTED 2.2.3 事务隔离行为2.2.3.1 测试2.2.3.2 读未提交2.2.3.3 读提交2.2.3.4 可重复读 2.2.4 事务超时2.2.5 只读事务2…

2024认证杯数学建模B题思路模型代码

目录 2024认证杯数学建模B题思路模型代码:4.11开赛后第一时间更新&#xff0c;获取见文末名片 第十三届“认证杯”数学中国数学建模比赛赛后体会 2024认证杯数学建模B题思路模型代码:4.11开赛后第一时间更新&#xff0c;获取见文末名片 第十三届“认证杯”数学中国数学建模比…

SE78图片迁移下载

SAP好像并没有标准的事务码可以方便下载已上传至SAP服务器上的图片&#xff0c;通常的解决方法写一个专门下载这类图片的简单程序来处理。 REPORT Ydownload. DATA : g_bytecount TYPE i,g_content TYPE STANDARD TABLE OFbapiconten INITIAL SIZE …

中国知网:学术资源的宝库与知识共享的平台

中国知网&#xff0c;作为国内领先的学术平台&#xff0c;始终致力于实现全社会知识资源的传播共享与增值利用。自1999年6月创建以来&#xff0c;知网已经成为了中国学术界的重要组成部分&#xff0c;为广大学者、研究人员和学生提供了一个全面、便捷的学术资源库。 一、知网的…

OpenHarmony南向开发案例:【智能垃圾桶】

样例简介 智能垃圾桶可以通过数字管家应用来监测垃圾桶当前可用容量&#xff0c;提醒主人及时处理垃圾&#xff1b;通过日程管家可以实现和其他智能设备联动。 核心组件位置功能距离传感器置于垃圾桶盖内侧感应垃圾量红外传感器置于垃圾桶前端感应是否有人靠近光敏电阻开发板…

2006-2021年各省能源消费总量数据(无缺失)

2006-2021年各省能源消费总量数据&#xff08;无缺失&#xff09; 1、时间&#xff1a;2006-2021年 2、来源&#xff1a;能源年鉴、各省年鉴 3、范围&#xff1a;30个省 4、指标&#xff1a;能源消费总量&#xff08;万吨标煤&#xff09; 5、缺失情况&#xff1a;无缺失 …

AI人工智能讲师简历大模型讲师叶梓大模型技术与应用培训提纲

叶梓&#xff0c;工学博士&#xff0c;高级工程师。现某大型上市企业资深技术专家。 2005年上海交通大学计算机专业博士毕业&#xff0c;在校期间的主研方向为数据挖掘、机器学习、人工智能。毕业后即进入软件行业从事信息化技术相关工作&#xff1b;负责或参与了多项国家级、省…