54.替换数字题目描述给定一个字符串 s它包含小写字母和数字字符请编写一个函数将字符串中的字母字符保持不变而将每个数字字符替换为number。 例如对于输入字符串 “a1b2c3”函数应该将其转换为 “anumberbnumbercnumber”。输入描述输入一个字符串 s,s 仅包含小写字母和数字字符。输出描述打印一个新的字符串其中每个数字字符都被替换为了number输入示例a1b2c3输出示例anumberbnumbercnumber提示信息数据范围1 s.length 10000。解题思路利用双指针代码解法一StringBuilderimportjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);// 因为java中的String并不能扩充借助StringBuilder完成字符串操作StringBuildersbnewStringBuilder();Stringinputsc.nextLine();char[]inputArrayinput.toCharArray();for(inti0;iinputArray.length;i){if(inputArray[i]0inputArray[i]9){// 遇到数字则替换为numbersb.append(number);}else{sb.append(inputArray[i]);}}System.out.println(sb.toString());sc.close();}}解法二双指针法importjava.util.*;publicclassMain{publicstaticStringreplaceNumber(Strings){// 转换为字符数组char[]sArrays.toCharArray();// 为重构字符串输数字个数intcount0;for(inti0;isArray.length;i){if(sArray[i]0sArray[i]9){count;}}// 重构字符串数组char[]newArraynewchar[sArray.lengthcount*5];// 给定右指针rightintrightnewArray.length-1;for(intleftsArray.length-1;left0;left--){if(sArray[left]0sArray[left]9){// 从后到前填充numbernewArray[right--]r;newArray[right--]e;newArray[right--]b;newArray[right--]m;newArray[right--]u;newArray[right--]n;}else{// 填充原来字母newArray[right--]sArray[left];}}returnnewString(newArray);}publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);// 读取输入字符串并打印System.out.println(replaceNumber(sc.nextLine()));sc.close();}}