题解 | #表示数字#
表示数字
https://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6
import java.util.Scanner; import java.util.*; // 遍历一遍字符串,一个个append到空StringBuilder对象中 // 当遍历到数字前面为非数字(例如a0)、和字母前面是数字(例如0a)两种情况下先append(*)再append(当前字符) // 特殊情况,数字开头和数字结尾,遍历时会导致数组越界,所以单独处理 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str = in.nextLine(); StringBuilder sb = new StringBuilder(); if (Character.isDigit(str.charAt(0))) { // 如果第一位是数字 sb.append("*"); } for (int i = 0; i < str.length(); i++) { if (Character.isDigit(str.charAt(i))) { // 如果是数字 if (i - 1 >= 0 && !Character.isDigit(str.charAt(i - 1))) { // 如果数字前面不是数字 sb.append("*"); // 在数字前面加 * } } else { // 如果不是数字 if (i - 1 >= 0 && Character.isDigit(str.charAt(i - 1))) { // 如果其前面是数字 sb.append("*"); } } // 当不符合上述情况直接append当前值,如果符合则上面也已经添加了*,所以也是直接append当前值 sb.append(str.charAt(i)); } if (Character.isDigit(str.charAt(str.length() - 1))) { // 如果最后一位是数字 sb.append("*"); } System.out.println(sb); } }