题解 | #表示数字#
表示数字
https://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { //输入的字符串中可能存在***** public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); char[] arr = str.toCharArray(); int len = arr.length; StringBuffer sb = new StringBuffer(); if(len == 1){ if(arr[0]>='0' && arr[0]<='9'){ sb.append("*"); sb.append(arr[0]); sb.append("*"); }else{ sb.append(arr[0]); } System.out.println(sb.toString()); return; } //首1 [0] if(arr[0]>='0' && arr[0]<='9'){ sb.append("*"); sb.append(arr[0]); if(arr[1]<'0' || arr[1]>'9'){ //后一位 sb.append("*"); } }else{ sb.append(arr[0]); } //body:数字两边添加* for(int i=1; i<len-1; i++){ //首1~尾1中间部分 [1,len-2] char c = arr[i]; if(c>='0' && c<='9'){ sb.append("*"); sb.append(c); if(arr[i+1]<'0' || arr[i+1]>'9'){ sb.append("*"); } }else{ sb.append(c); } } //如果*两边都为数字,则去掉该* for(int i=1; i<sb.length()-1; i++){ char c1 = sb.charAt(i-1); char c2 = sb.charAt(i); char c3 = sb.charAt(i+1); if(c1>='0' && c1<='9' && c2=='*' && c3>='0' && c3<='9'){ sb.deleteCharAt(i); } } //尾1 [len-1] if(arr[len-1]>='0' && arr[len-1]<='9'){ if(arr[len-2]<'0' || arr[len-2]>'9'){ //前一位 sb.append("*"); } sb.append(arr[len-1]); sb.append("*"); }else{ sb.append(arr[len-1]); } System.out.println(sb.toString()); } }