题解 | #表示数字#
表示数字
https://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6
没有用正则,直接苦力莽 ~
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = in.nextLine(); int len = s.length(); // 装结果字符串 StringBuilder sb = new StringBuilder(); for(int i = 0; i < len; i++) { char c = s.charAt(i); if(isNumer(c)) { // 先给前面拼一个星 sb.append("*").append(c); // 设置一个开始往右边走 int r = i + 1; /* 判断 r 是否走到末尾,且 r 位置的字符是否是数字 如果是数字就继续拼,然后往前移动 */ while(r < len && isNumer(s.charAt(r))) { sb.append(s.charAt(r)); r++; } // 直到退出循环,它不是一个数字了,再拼接一个星 sb.append("*"); /* 注意这里,r 现在指向的是一个非数字位置,还没有拼接呢! 所以要把 i 设置成 r - 1 的位置,让其走到下面的 else 里面把这个字符拼上去 */ i = r - 1; } else { sb.append(c); } } System.out.println(sb); } // 判断是否是数组 public static boolean isNumer(char c) { return Character.isDigit(c); } }