刷题 替换数字

news2024/11/19 23:33:35

题干

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。

例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。

对于输入字符串 "a5b",函数应该将其转换为 "anumberb"

输入:一个字符串 s,s 仅包含小写字母和数字字符。

输出:打印一个新的字符串,其中每个数字字符都被替换为了number

样例输入:a1b2c3

样例输出:anumberbnumbercnumber

解题思路

本题和删除元素的思路有点相似都是要在原有空间的基础上修改,所以我们也想要覆盖建立新的字符串。依旧是双指针的思想。

快指针去探查军情,慢指针安营扎寨。

两个指针先指向首元素,快指针发现是字符,慢指针前进一个。

快指针前进一个,发现是数字,在慢指针索引插入number,但是没有足够放下number的空间,如果想要创造空间就需要将数组整体往后移,很麻烦而且时间复杂度高

本题很巧妙的思路是把所需要的空间扩充好后,从后面重新开始倒序建立字符串,这样空间就足够了,不可谓不妙。

思路还是相似的,快指针指向旧数组末端,探查军情,慢指针指向新数组末端。如果快指针指到字母,就把字母传给慢指针的位置,如果快指针指到数字,慢指针就移动将number输入到字符串。

完整代码如下

while(cin >> s) 为大循环,可以不断输入字符串得到结果

#include <iostream>
using namespace std;

int main() {
    string s;
    while (cin >> s) {
    	//让快指针指向旧字符串的后端
		int fast = s.size() - 1; 
        //计算字符串中数字的大小
		int count = 0;
		for(int i = 0; i < s.size(); i++){
			//遇到数字,count加一
			if(s[i] >= '0' && s[i] <= '9'){
				count++;
			} 
		}
		//填充所需的空间,因为数字的位置会被取代,所以为6-1=5 
		s.resize(s.size() + count * 5); 
		//建立快指针
		int slow = s.size() - 1;
		//建立新数组,直到快指针左越界 
		while(fast >= 0){
			//如果快指针指向的是数字 
			if(s[fast] >= '0' && s[fast] <= '9'){
				//倒序填充number 
				s[slow--] = 'r';
				s[slow--] = 'e';
				s[slow--] = 'b';
				s[slow--] = 'm'; 
				s[slow--] = 'u';
				s[slow--] = 'n';
			}
			//如果是字母,把字母填在慢指针的位置上 
			else{
				s[slow--] = s[fast]; 
			} 
			fast--;
		} 

        cout << s << endl;       
    }
}

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

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

相关文章

关于超出表示范围的数据类型转化

目录 背景&#xff1a; 问题分析&#xff1a; 参数异常分析&#xff1a; 分析文件原始值&#xff1a; 分析数据类型转换 代码分析&#xff1a; 结论&#xff1a; 参考资料&#xff1a; 背景&#xff1a; 在Ubuntu环境下进行项目开发时&#xff0c;调试时程序总是进入断…

小型企业网络优化加速方案

随着数字化经济蓬勃发展&#xff0c;小型企业的网络基础设施变得尤为重要。在这一浪潮中&#xff0c;建立一个稳定、高效的企业网络成为支撑业务发展的关键。本文将深入研究针对小型企业设计的网络优化加速方案&#xff0c;助力企业主了解如何规划和实施适合自身业务需求的网络…

车载诊断系统应用方案选型,ESP8266方案让成本降低了35%,销售数据提升47%

车载诊断系统简称OBD&#xff0c;这个系统随时监控发动机的运行状况和尾气后处理系统的工作状态&#xff0c;一旦发现有可能引起排放超标的情况&#xff0c;会马上发出警示。当系统出现故障时&#xff0c;故障灯(MIL)或检查发动机(Check Engine)警告灯亮&#xff0c;同时OBD系统…

使用Python进行容器编排Docker Compose与Kubernetes的比较

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 随着容器化技术的普及&#xff0c;容器编排成为了管理和部署容器化应用程序的重要环节。在容…

尺取法知识点讲解

一、固定长度的情况&#xff1a; 最小和(sum) 输入N个数的数列&#xff0c;所有相邻的M个数的和共有N-M1个&#xff0c;求其中的最小值。 输入格式 第1行&#xff0c;2个整数N&#xff0c;M&#xff0c;范围在[3…100000]&#xff0c;N>M。 第2行&#xff0c;有N个正…

Sqli-labs靶场第25关[Sqli-labs-less-25]自动化注入-SQLmap工具注入

过滤了AND OR 使用的函数是 preg_replace 特点&#xff1a;只对值进行一次检测闭合方式为 单引号 可以使用双写进行绕过 手工注入 ?id0 union select 1,database(),user() -- sqlmap自动化注入 sqlmap.py -u http://192.168.58.114:802/sqli-labs/Less-25/?id2 --batch -…

交换机的种类有哪些?主要都具有哪些作用?

在当今数字化时代&#xff0c;网络已经成为我们生活和工作中不可或缺的一部分。无论是家庭网络还是企业网络&#xff0c;都需要有效的网络设备来实现数据通信和资源共享。而网络交换机作为一种重要的网络设备&#xff0c;扮演着连接和管理网络设备的关键角色。本文将探讨交换机…

etcd campaign

1. 引言 本文主要讲解使用etcd进行选举的流程&#xff0c;以及对应的缺陷和使用场景 2. etcd选举流程 流程如以代码所示&#xff0c;流程为&#xff1a; clientv3.New 创建client与etcd server建立连接 concurrency.NewSession 创建选举的session&#xff0c;一般会配置ses…

【LAMMPS学习】八、基础知识(3.5)计算弹性常数

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

公众号推文链接二维码如何制作?网址转换二维码的操作技巧

如何将公众号文章的链接做成二维码图片呢&#xff1f;公众号是很多人会使用的一种推广手段&#xff0c;通过更新文章来为关注公众号的用户提供内容。那么如果想要将已发布的推文的网址生成二维码&#xff0c;让用户可通过扫码的方式来访问对应链接的文章&#xff0c;这种效果该…

中科亿海微-CL1656功能验证开发板

I. 引言 A. 研究背景与意义 CL1656是一款精度高、功耗低、成本低的5V单片低功耗运放&#xff0c;由核心互联公司研发制造&#xff0c;CL1656 是一个 16-bit、快速、低功耗逐次逼近型 ADC&#xff0c;吞吐速率高达 250 kSPS&#xff0c;并且内置低噪声、宽 带宽采样保持放大器。…

三年蝉联中国AI开发平台榜首,这家云服务商靠的是什么?

最近两年生成式AI与大模型的持续火爆&#xff0c;让AI开发也成为了整个IT行业最炙手可热的领域。然而对于广大开发者来说&#xff0c;什么样的AI开发平台才是他们的首选&#xff1f; 近日&#xff0c;全球知名市场调研机构弗若斯特沙利文&#xff08;Frost & Sullivan, 简称…

Java中的类加载器

类加载器 1.什么是类加载器&#xff1f; 启动类加载器&#xff08;Bootstrap ClassLoader&#xff09;&#xff1a;这是JVM自带的类加载器&#xff0c;负责加载Java的核心类库&#xff0c;如rt.jar等。由于安全原因&#xff0c;启动类加载器加载的类不能被其他类加载器加载的类…

Windows如何安装JDK

JDK和JRE简介 JDK&#xff1a;Java Development ToolKit java开发工具包&#xff0c;包含JRE针对java程序开发者 JRE&#xff1a;Java Runtime Environment java程序的运行环境针对java使用者来说 下载JDK&#xff0c;进入官网下载 Oracle官网 双击下载好之后的exe文件&#…

【Java集合进阶】数据结构(平衡二又树旋转机制)数据结构(红黑树、红黑规则、添加节点处理方案详解)

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

【大数据】Apache Knox 概述

Apache Knox 概述 1.概述1.1 Kerberos 封装1.2 简化客户端证书的管理1.3 Apache Ranger 集成1.4 Hadoop URLs VS Knox URLs 2.自定义 Apache Knox2.1 Topology2.2 Provider2.3 Services2.4 Personalized services 3.Tips3.1 Setting up SSL3.2 常见问题3.2.1 Bulky answer3.2.2…

ui生成代码详细教程

被askmanyai的图生代码技术秀到了&#xff01;前端开发效率&#xff0c;提升到秒级 完全吊打了阿里的图生代码技术&#xff01; 上传一张网站图片或者UI稿&#xff0c;然后用askmanyai生成实现这个网站的代码的教程来啦&#xff01; 在askmanyai的中文网站上一分钟就能实现&…

基础算法---二分查找

文章目录 基本思想1.数的范围2.搜索旋转排序数组3.搜索插入位置4.x的平方根总结 基本思想 二分查找的必要条件并不是单调&#xff0c;而是当我给定一个边界条件&#xff0c;然后左边满足这个边界条件&#xff0c;右边不满足这个边界条件&#xff0c;然后可以查找这个临界点&am…

统一所有 LLM API:支持预算与速率限制 | 开源日报 No.229

BerriAI/litellm Stars: 6.7k License: NOASSERTION litellm 是一个使用 OpenAI 格式调用所有 LLM API 的工具。它支持 Bedrock、Azure、OpenAI、Cohere、Anthropic 等 100 多种 LLMs&#xff0c;提供企业级代理服务器和稳定版本 v1.30.2。 主要功能和优势包括&#xff1a; 将…

电机控制专题(三)——Sensorless之有功磁链Active Flux电压模型

文章目录 电机控制专题(三)——Sensorless之有功磁链Active Flux电压模型前言理论推导仿真验证总结参考文献 电机控制专题(三)——Sensorless之有功磁链Active Flux电压模型 前言 总结下电机控制中的有功磁链Active Flux(AF)模型。 纯小白&#xff0c;如有不当&#xff0c;轻…