代码随想录-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());

    }
}
相关推荐
奋发向前wcx5 小时前
y1,y2总复习笔记5 2026.7.19
数据结构·笔记·算法
ChaoZiLL9 小时前
我的数据结构4-栈和队列
数据结构
miller-tsunami10 小时前
顺序表相关知识点
数据结构·顺序表
华玥作者12 小时前
uniapp 万条数据不卡顿:我写了个虚拟列表组件 hy-list,原生支持瀑布流
数据结构·uni-app·list·vue3
2401_8414956412 小时前
【数据结构】B*树
数据结构·c++·b树·算法·删除·插入·三分分裂
晚笙coding12 小时前
LeetCode 108:将有序数组转换为二叉搜索树 —— 从数组到平衡二叉树的递归构造
数据结构·算法·leetcode
不如语冰13 小时前
AI大模型入门-模块导入import
数据结构·人工智能·pytorch·python
岑梓铭13 小时前
《考研408数据结构》第七章(7.1 查找:顺序查找、折半查找、分块查找)复习笔记
数据结构·笔记·考研·408·ds·查找
壹号用户14 小时前
c++入门之list了解及使用
数据结构·list
来一碗刘肉面14 小时前
什么是双端队列
数据结构·链表