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

难度参考

        难度:简单

        分类:字符串

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

题目

        给定一个字符串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)。

打卡

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【GitHub项目推荐--开源2D 游戏引擎】【转载】

microStudio 是一个可在浏览器中运行的游戏引擎&#xff0c;它拥有一套精美、设计精良、全面的工具&#xff0c;可以非常轻松地帮助你创建 2D 游戏。 你可以在浏览器中访问 microStudio.dev 开始搭建你的游戏&#xff0c;当然你可以克隆现有项目或创建新游戏并开始编码&#x…

Go 基本数据

第 2 章 基本数据类型 Go 的数值类型包括了不同大小的整数 、浮点数 、复数&#xff1b; 各种数值类型分别有自己的大小&#xff0c;对正负号支持也各不相同&#xff1b; 1. 整数&#xff08;OK&#xff09; 整数类型&#xff08;整型&#xff09;整数类型Go 语言同时支持 有…

代码随想录算法训练营29期|day28 任务以及具体安排

93.复原IP地址 class Solution {List<String> result new ArrayList<>();public List<String> restoreIpAddresses(String s) {StringBuilder sb new StringBuilder(s);backTracking(sb, 0, 0);return result;}private void backTracking(StringBuilder s,…

VS Code Json格式化插件-JSON formatter

&#x1f9aa;整个文件格式化 按快捷键Shift Alt F &#x1f96a;仅格式化选择内容 需要选择完整的json段落即&#xff1a;{} 或 [] 括起来的部分&#xff0c;再按快捷键Ctrl K F

高分辨率图像合成;可控运动合成;虚拟试衣;在FPGA上高效运行二值Transformer

本文首发于公众号&#xff1a;机器感知 高分辨率图像合成&#xff1b;可控运动合成&#xff1b;虚拟试衣&#xff1b;在FPGA上高效运行二值Transformer Scalable High-Resolution Pixel-Space Image Synthesis with Hourglass Diffusion Transformers We present the Hourgla…

蓝桥杯真题(Python)每日练Day4

题目 OJ编号2117 题目分析 第一种先采用暴力的思想&#xff0c;从第一根竹子开始&#xff0c;找到连续的高度相同的竹子&#xff0c;砍掉这些竹子&#xff0c;一直循环这个方法&#xff0c;直到所有的竹子高度都为1。很明显&#xff0c;依次遍历竹子的高度复杂度为O&#x…

jdk的安装和Tomcat的安装

jdk的安装 双击jdk&#xff0c;然后一路下一步 公共JRE可以关闭&#xff0c;没多大用&#xff0c;反而会占用内存 计算机–>属性–>高级系统设置–>环境变量 系统变量–新建 JAVA_HOMEjdk的存放路径 修改path 在path的最后面添加&#xff08;&#xff1b;%JAVA_H…

SpringBoot整合SSE

目录 1.SseController2. SseServiceSseServiceSseServiceImpl 3.SendMessageTask4.将定时任务加入启动类5.参考资料 1.SseController Slf4j RestController RequestMapping("sse") public class SseController {Autowiredprivate SseService sseService;RequestMappi…

cesium应用篇:静态图添加与平移、缩放

应用说明 添加静态图到指定extent通过键盘事件对static image进行调整 向东、西、南、北移动沿东西、南北方向缩放命令行侧输出当前extent&#xff0c;可用于几何匹配 初始化 Earth 初始化 <!DOCTYPE html> <html lang"en"> <head><meta c…

openai assistants api接入微信机器人,实现类GPTs功能

chatgpt网址:https://chat.xutongbao.top 比普通gpt多了代码解释器功能&#xff0c;和上传训练数据文件的功能&#xff0c;这两个功能就是GPTs拥有的&#xff0c;而普通gpt没有拥有的

前后端分离项目中实现图形验证码

图形验证码在我们的日常生活中时经常用到的&#xff0c;一般用于用户的登录、注册等。 图形验证码在互联网应用中的作用是提高安全性、防止滥用和保护用户隐私。它是一种简单而有效的人机验证技术&#xff0c;帮助保护系统和用户免受自动化攻击的影响。 本次我们通过spring b…

Qt采集本地摄像头推流成rtsp/rtmp(可网页播放/支持嵌入式linux)

一、功能特点 支持各种本地视频文件和网络视频文件。支持各种网络视频流&#xff0c;网络摄像头&#xff0c;协议包括rtsp、rtmp、http。支持将本地摄像头设备推流&#xff0c;可指定分辨率和帧率等。支持将本地桌面推流&#xff0c;可指定屏幕区域和帧率等。自动启动流媒体服…

华为认证的HCIP考实验考试么?

HCIP在考试的时候不考实验&#xff0c;只考笔试&#xff0c;只是不同方向的HCIP认证考试的考试科目不同&#xff0c;有的考一科&#xff0c;有的考二科&#xff0c;有的考三科&#xff0c;具体看方向来定。HCIA和HCIP只考笔试。HCIE考笔试和实验。 虽然HCIP不考实操&#xff0…

MongoDB快速入门

目录 什么是MongoDB&#xff1f; MongoDB与关系型数据库对比 MongoDB应用场景 MongoDB语法 数据库操作 集合操作 安全认证 MongoDB插入指令 MongoDB查询指令 MongoDB更新指令 MongoDB删除指令 内嵌文档和数组 嵌套型的数组 固定&#xff08;封顶&#xff09;集合…

线程的同步和互斥学习笔记

目录 互斥锁的概念和使用 线程通信-互斥 互斥锁的创建和销毁 申请锁-pthread_mutex_lock 释放锁-pthread_mutex_unlock 读写锁的概念和使用 死锁的避免 互斥锁的概念和使用 线程通信-互斥 临界资源 一次只允许一个任务&#xff08;进程、线程&#xff09;访问的共享资…

基于springboot+vue的台球管理系统

摘要 台球管理系统是一款基于Spring Boot和Vue.js技术栈构建的现代化系统&#xff0c;旨在提供全面而高效的台球场馆管理服务。该系统通过整合前后端技术&#xff0c;实现了场馆预约、会员管理、比赛统计等核心功能&#xff0c;为台球场馆管理员和玩家提供了便捷、智能的管理和…

leetcode第 381 场周赛最后一题 差分,对称的处理

第 381 场周赛 - 力扣&#xff08;LeetCode&#xff09;最后一题3017. 按距离统计房屋对数目 II - 力扣&#xff08;LeetCode&#xff09; dijkstra超时了&#xff0c;看了灵神的解题方法力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台&#xff0c;其…

Linux中普通用户如何使用sudo指令提升权限

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 普通用户为何无法使用sudo&#xff1f; 我们来看一下具体操作 总结 前言 世上有两种耀眼的光芒&#xff0c;一种是正在升起的太阳&#xff0c;一种是正在努力…

Facebook的区块链之路:探秘数字货币的未来

近年来&#xff0c;Facebook一直在积极探索区块链技术&#xff0c;并逐渐将目光聚焦在数字货币领域。从推出Libra项目到改名为Diem&#xff0c;Facebook一直在寻求在数字货币领域取得突破性进展。本文将深入探讨Facebook的区块链之路&#xff0c;揭示其对数字货币未来发展的影响…

LLM自回归解码

在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;大型语言模型&#xff08;LLM&#xff09;如Transformer进行推理时&#xff0c;自回归解码是一种生成文本的方式。在自回归解码中&#xff0c;模型在生成下一个单词时会依赖于它之前生成的单词。 使用自回归解码的公式…