算法练习-替换数字(思路+流程图+代码)

news2025/1/16 17:51:44

难度参考

        难度:简单

        分类:字符串

        难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。以下内容均为个人笔记,旨在督促自己认真学习。

题目

        给定一个字符串S,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number.
        示例1:
        输入:s="a5b"
        输出:"anumberb"
        解释:将数字5替换成number

思路

        当解决这个问题时,我们的目标是遍历输入字符串,将其中的数字字符替换为"number"。下面是一个简单的思路:

  1. 创建一个空字符串,用于存储替换后的结果。
  2. 遍历输入字符串的每个字符。
  3. 对于每个字符,检查是否是数字字符。
  4. 如果是数字字符,则将"number"添加到结果字符串;否则,将字符本身添加到结果字符串。
  5. 返回最终的结果字符串。

        有双指针的做法,但是好像没比要,有直接判断是否为数字的函数。

示例

  1. 输入字符串: "a5b"
  2. 遍历每个字符:
    • 字符 'a' 不是数字,添加到结果字符串中。
    • 字符 '5' 是数字,替换为 "number",添加到结果字符串中。
    • 字符 'b' 不是数字,添加到结果字符串中。
  3. 最终结果: "anumberb"

梳理

        让我们解释一下为什么这样的代码能够实现将字符串中的数字替换为"number"的功能:

  1. 定义函数 replaceDigitsWithNumber

    • replaceDigitsWithNumber 函数被定义为接受一个字符串参数 s,返回一个字符串。
    • 在函数内部,初始化一个空字符串 result 用于存储替换后的结果。
  2. 遍历输入字符串的每个字符

    • 使用 for 循环遍历输入字符串 s 中的每个字符。
  3. 检查字符是否是数字

    • 使用 isdigit 函数检查当前字符是否是数字。
    • 如果是数字,将 "number" 添加到结果字符串 result 中。
    • 如果不是数字,将当前字符直接添加到结果字符串 result 中。
  4. 返回结果字符串

    • 函数最终返回存储替换后结果的字符串 result
  5. 主函数中的调用

    • main 函数中,定义了一个示例输入字符串 input,并调用了 replaceDigitsWithNumber 函数,将结果存储在 output 中。
  6. 打印输入和输出字符串

    • 使用 cout 打印输入字符串和替换后的输出字符串。
  7. 返回程序执行成功

    • main 函数返回 0,表示程序成功执行。

        总体来说,这个代码的核心是利用循环遍历输入字符串,对每个字符进行判断,如果是数字则替换为"number",最终返回替换后的字符串。这是通过字符串的拼接和条件判断来实现的。

代码

#include <iostream>
#include <string>

// 定义函数,将字符串中的数字替换为"number"
string replaceDigitsWithNumber(const string& s) {
    // 存储替换后的结果字符串
    string result;
    
    // 遍历输入字符串的每个字符
    for (char c : s) {
        // 如果当前字符是数字,则将"number"添加到结果字符串
        if (isdigit(c)) {
            result += "number";
        } else {
            // 否则,将当前字符添加到结果字符串
            result += c;
        }
    }
    
    // 返回替换后的结果字符串
    return result;
}

// 主函数
int main() {
    // 示例输入字符串
    string input = "a5b";
    
    // 调用替换函数,得到输出字符串
    string output = replaceDigitsWithNumber(input);
    
    // 打印输入和输出字符串
    cout << "输入: " << input << endl;
    cout << "输出: " << output << endl;

    // 返回程序执行成功
    return 0;
}

        时间复杂度O(n)。

        空间复杂度O(n)。

打卡

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

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

相关文章

全国各省市上市公司数量数据,Shp、excel格式,含上市企业数量、行政区划中心点位经纬度等字段

基本信息. 数据名称: 全国各省市上市公司数量数据 数据格式: Shp、excel 数据时间: 2023年1月 数据几何类型: 面 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1province省份名称2provin_dm省份代码3city城市名…

力扣刷MySQL-第七弹(详细讲解)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;力扣刷题讲解-MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出…

如何快速搭建springboot+前后端分离(vue),多商户客户端实现微信小程序+ios+app使用uniapp(一处编写,处处编译)

kxmalls外卖生鲜多商户&#xff0c;针对中小商户、企业和个人学习者开发。使用Java编码&#xff0c;采用SpringBoot、Mybatis-Plus等易用框架&#xff0c;适合个人学习研究。同时支持单机部署、集群部署&#xff0c;用户与店铺范围动态定位&#xff0c;中小商户企业可根据业务动…

C语言的编译和链接

每日一言 要保持希望在每天清晨太阳升起。 --自己 前言 当我们写下C语言代码&#xff08;源文件、以.c为后缀&#xff09;的时候&#xff0c;他需要经过一个翻译环境&#xff0c;被处理后形成一个可执行程序&#xff08;以.exe为后缀&#xff09;。形成的这个可执行程序里面放…

【服务器】搭建一台属于自己的服务器

​🌈个人主页:Sarapines Programmer🔥 系列专栏:【服务器】搭建网站⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 1. 购买服务器和域名 1.1 购买服务器 1.1.1 阿里云服务器 1.1.2 香草云服务器 1.2 购买域名 2. 安装宝塔…

matlab抽取与插值

什么是抽取&#xff1f; 我们假设一个数字信号 x ( n ) , n 1 , 2 , . . . , N x(n),n1,2,...,N x(n),n1,2,...,N共有 N N N个点&#xff0c;抽取就是每个几个点抽1个点&#xff0c;比如2倍抽取&#xff0c;那么抽取后的信号为 y ( n ) , y ( 1 ) x ( 1 ) , y ( 2 ) x ( 3 …

WebSocket-黑马好客租房

文章目录 网站中的消息功能如何实现&#xff1f;什么是WebSocket&#xff1f;http与websocket的区别httpwebsocket 浏览器支持情况快速入门创建itcast-websocket工程websocket的相关注解说明实现websocket服务测试编写js客户端 SpringBoot整合WebSocket导入依赖编写WebSocketHa…

Python实现M-Estimators稳健线性回归模型(RLM算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 M-Estimators 是稳健统计估计中的一个重要概念&#xff0c;它们在处理含有异常值、离群点或者影响点的…

GPT应用_AutoGPT

项目地址&#xff1a;https://github.com/Significant-Gravitas/AutoGPT 1 功能 1.1 整体功能&#xff0c;想解决什么问题 单独使用 ChatGPT 时&#xff0c;只提供基本的聊天&#xff0c;无法实现复杂多步的功能&#xff0c;以及与其它应用交互&#xff0c;如果想提供某种功…

【开源】基于JAVA的停车场收费系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 停车位模块2.2 车辆模块2.3 停车收费模块2.4 IC卡模块2.5 IC卡挂失模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 停车场表3.2.2 车辆表3.2.3 停车收费表3.2.4 IC 卡表3.2.5 IC 卡挂失表 四、系统实现五、核心代码…

【微服务】springcloud集成sleuth与zipkin实现链路追踪

目录 一、前言 二、分布式链路调用问题 三、链路追踪中的几个概念 3.1 什么是链路追踪 3.2 常用的链路追踪技术 3.3 链路追踪的几个术语 3.3.1 span ​编辑 3.3.2 trace 3.3.3 Annotation 四、sluth与zipkin概述 4.1 sluth介绍 4.1.1 sluth是什么 4.1.2 sluth核心…

微电网优化MATLAB:遗传算法(Genetic Algorithm,GA)求解微电网优化(提供MATLAB代码)

一、微网系统运行优化模型 微电网优化是指通过对微电网系统中各个组件的运行状态进行监测和调节&#xff0c;以实现微电网系统的高效运行和能源利用的最大化。微电网是由多种能源资源&#xff08;如太阳能、风能、储能等&#xff09;和负载&#xff08;如建筑、工业设备等&…

NLP论文阅读记录 - 2021 | WOS 使用预训练的序列到序列模型进行土耳其语抽象文本摘要

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1 预训练的序列到序列模型2.2 抽象文本摘要 三.本文方法3.1 总结为两阶段学习3.1.1 基础系统 3.2 重构文本摘要 四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结…

STM32 Hal库FreeRtos查看所有任务的内存栈信息使用情况剩余空间 仅需一个函数搞定 超简单

STM32F103 基于Hal库跑FreeRtos&#xff0c;查看所有任务的栈的信息&#xff0c;包括任务名&#xff0c;任务状态&#xff0c;任务优先级&#xff0c;空闲栈&#xff0c;任务号。 运行结果如下 只需要使用一个函数vTaskList &#xff1a;获得任务的统计信息&#xff0c;形式为…

【leetcode】移除元素

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一.暴力求解法二.使用额外数组三.原地修改数组 点击查看题目 一.暴力求解法 若我们不考虑时间复杂度…

AI视频智能识别技术在智慧农业大棚升级改造管理场景中的应用方案

一、需求分析 随着科技的进步和农业现代化的推进&#xff0c;智能化技术逐渐成为现代农业发展的重要支撑。农业大棚作为现代农业的重要组成部分&#xff0c;其智能化改造对于提高农业生产效率、降低成本、增加收益具有重要意义。利用先进的信息化手段来对农业大棚进行管理&…

复合材料压缩过程中引入屈曲变形前后的对比

振动模态&#xff1a; 压缩过程&#xff08;不考虑屈曲引入&#xff09; 在45KN出现拐点&#xff0c;在30步。 30步&#xff0c;压缩时的面外位移&#xff0c;与一阶模态类似&#xff1b;31步已经不正常。在快破坏前几步与一阶模态很相似。 30步树脂拉伸只是零星出现 …

CSS之高度塌陷和外边距塌陷

目录 1.高度塌陷&#xff08;原因&#xff0c;如何解决&#xff09; 【概念介绍】 【解决办法】 【概念介绍-BFC】 【拓展-BFC的触发条件】 2.外边距塌陷 &#xff08;原因&#xff0c;如何解决&#xff09; 【概念介绍】 【两种情况】 1.相邻块元素 2.嵌套块元素 【…

【arthas诊断线上java应用】

背景&#xff1a; 想起来之前的面试&#xff0c;有一次问到&#xff1a;假如线上出现cpu飙升&#xff0c;和内存问题&#xff0c;如何排查&#xff1f;当时我只用过jprofiler&#xff0c;现在想想这个玩意是要占用一个端口的&#xff0c;而且会影响服务器的性能&#xff0c;适…

解决ssh登录Permission denied, please try again

现象截图如下&#xff1a; 确定root的密码是正确的&#xff0c;最后的原因找到了&#xff0c;是远程的服务器&#xff0c;禁用了root账户可以被远程访问的权限。开启操作如下&#xff1a; 1.编辑配置文件 vi /etc/ssh/sshd_config 2.文件中找到PermitRootLogin #PermitRoo…