当前位置: 首页 > news >正文

【代码随想录 字符串3.替换数字】

在这里插入图片描述
第一次自己写的,直接调用了库函数,但是直接调用库函数显得很傻逼且没有意义。

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();
        s = s.replace("0", "number");
        s = s.replace("1", "number");
        s = s.replace("2", "number");
        s = s.replace("3", "number");
        s = s.replace("4", "number");
        s = s.replace("5", "number");
        s = s.replace("6", "number");
        s = s.replace("7", "number");
        s = s.replace("8", "number");
        s = s.replace("9", "number");
        System.out.println(s);
 
    }
 
 

正解;

package code;

import code.Solution;

import java.util.Scanner;



public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();
        char[] ch = s.toCharArray();
        int len = ch.length;
        for (int i = 0; i < ch.length; i++) {
            if(ch[i] >='0' && ch[i] <= '9'){
                len +=5;
            }
        }
        char []res = new char[len];

        int i = len -1;
        for (int j = ch.length-1 ; j>=0 ; j--) {
            if(ch[j]>='0' && ch[j]<='9'){
                res [i--] ='r';
                res [i--] ='e';
                res [i--] ='b';
                res [i--] ='m';
                res [i--] ='u';
                res [i--] ='n';
            }else{
                res[i--] = ch[j];
            }
        }

        System.out.println(new String(res));

    }


}





题解。

// 为了还原题目本意,先把原数组复制到扩展长度后的新数组,然后不再使用原数组、原地对新数组进行操作。
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int len = s.length();
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) >= 0 && s.charAt(i) <= '9') {
                len += 5;
            }
        }
        
        char[] ret = new char[len];
        for (int i = 0; i < s.length(); i++) {
            ret[i] = s.charAt(i);
        }
        for (int i = s.length() - 1, j = len - 1; i >= 0; i--) {
            if ('0' <= ret[i] && ret[i] <= '9') {
                ret[j--] = 'r';
                ret[j--] = 'e';
                ret[j--] = 'b';
                ret[j--] = 'm';
                ret[j--] = 'u';
                ret[j--] = 'n';
            } else {
                ret[j--] = ret[i];
            }
        }
        System.out.println(ret);
    }
}

由于字符串不方便进行定点删除,所以要转化到char数组来进行操作。

后面的遍历要从最后来进行,如果从前面进行也行。
但是题解的方法模拟了题意,题解中就不能从前面进行。

相关文章:

  • wordpress 跨站调用网络推广员是什么
  • 做导航网站备案冯耀宗seo课程
  • b2b网站建设公司b站新人视频怎么推广
  • otc场外交易网站开发百度网站电话是多少
  • 企业网站备案要钱嘛产品如何做网络推广
  • 余姚公司做网站google关键词推广
  • C++中为什么要使用nullptr而不是null
  • 数字电子技术基础(三十九)——显示译码器
  • 基于CAPL语法实现对程控电源的控制(通用DLL版,支持TCP协议,RS232协议,SCPI指令)
  • 对解释器模式的理解
  • 互联网三高架构设计
  • JAVA对象创建过程和类加载过程
  • 整车CAN网络和CANoe
  • 如何使用Python自动化测试工具Selenium进行网页自动化?
  • Java类加载机制深度解析
  • 蓝桥杯基础算法-字符串与集合
  • 瑞萨RA4M2使用心得-KEIL5的第一次编译
  • pipwire cpu 100%使用率的问题
  • 大模型学习五:‌DeepSeek Janus-Pro-7B 多模态半精度本地部署指南:环境是腾讯cloudstudio高性能GPU 16G免费算力
  • 定制一款国密浏览器(3):修改浏览器应用程序安装路径
  • Java 基础-31-枚举-认识枚举
  • 每日一题(小白)回溯篇4
  • ngx_timezone_update
  • Python----计算机视觉处理(Opencv:道路检测之车道线拟合)
  • OpenSceneGraph 中的 osg::Transform详解
  • 图片尺寸修改软件下载