代码随想录-04-字符串-03.替换数字

替换数字

题目

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

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

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

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

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

样例输入:a1b2c3

具体思路

  • 输入时计算数组中存在的数字数量,str[i] > "0" && str[i] < "9" 进行判断;
  • 记录输入的数量size,记录需要扩容的数量resize;
  • 从后往前 就不用移动原来中的元素(因为目的是O(1)的空间复杂度) 进行扩容;
  • 每查找到一个数字进行替换,否则正常复制。

具体代码

CPP
C++ 复制代码
#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 original_size = s.size(); // 保存原始字符串大小
    s.resize(original_size + count * 5); // 扩展字符串以容纳 "number"

    int k = s.size() - 1;  // 新字符串末尾的位置
    for (int j = original_size - 1; j >= 0; j--) {
        if (s[j] >= '0' && s[j] <= '9') {  // 判断是否为数字
            s[k] = 'r';
            s[k - 1] = 'e';
            s[k - 2] = 'b';
            s[k - 3] = 'm';
            s[k - 4] = 'u';
            s[k - 5] = 'n';  // 插入 "number"
            k -= 6;  // 减去 "number" 的长度
        } else {
            s[k] = s[j];  // 复制非数字字符
            k--;
        }
    }

    // 输出修改后的字符串
    cout << s << endl;

    return 0; 
}
Java直接版本
java 复制代码
import java.util.Scanner;

public class Main {

    public static void main(String[] s) {
        Scanner sc = new Scanner(System.in);
        String cur = sc.nextLine();
        StringBuilder sb = new StringBuilder();
        int count = 0;
        for (int i = 0; i < cur.length(); i++) {
            if (cur.charAt(i) - '0' >= 0 && cur.charAt(i) - '0' <= 9) {
                sb.append("number");
            } else {
                sb.append(cur.charAt(i));
            }
        }
        System.out.println(sb.toString());

    }
}
相关推荐
糖果店的幽灵1 小时前
Pandas DataFrame 数据结构详解
数据结构·pandas
起个破名想半天了2 小时前
算法与数据结构之Dijkstra算法
数据结构·dijkstra·单源最短路径·迪杰斯特拉算法
啦啦啦啦啦zzzz3 小时前
数据结构:哈夫曼编码
数据结构·c++·哈夫曼编码
ChillCoding3 小时前
更新中:C++ STL库,查找排序(基础算法),数据结构,数学算法,竞赛相关基础
数据结构·c++·算法
apcipot_rain4 小时前
计科八股20260606——二叉树、PCA、图深度学习、进程上下文、C语言预编译、文件读写、单精度浮点数
c语言·数据结构·算法·pca·图神经网络
落羽的落羽4 小时前
【项目】JsonRpc框架——开发实现2(业务层)
linux·数据结构·c++·人工智能·算法·json·动态规划
SHARK_pssm4 小时前
【数据结构——单链表】
数据结构·经验分享·笔记
lightqjx5 小时前
【算法】数据结构_并查集
数据结构·算法·并查集
小蒋学算法5 小时前
算法-掉落的方块-线段树
数据结构·算法
Brilliantwxx5 小时前
【算法从零到千】【8-15】滑动窗口
数据结构·算法