题解 | #表示数字#

表示数字

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);
    }
}

全部评论

相关推荐

04-10 11:56
如皋中学 Java
高斯林的信徒:双c9能简历挂的?
点赞 评论 收藏
分享
秋盈丶:后续:我在宿舍群里和大学同学分享了这事儿,我好兄弟气不过把他挂到某脉上了,10w+阅读量几百条评论,直接干成精品贴子,爽
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务