题解 | #表示数字#
表示数字
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());
}
}
