牛客网华为机试【表示数字】

文章目录

  • 题目描述
  • 题目分析
  • java 代码
  • 结果

题目描述

将一个字符中所有出现的数字前后加上符号“*”,其他字符保持不变

public static String MarkNum(String pInStr){
	return null;
}

注意:输入数据可能有多行
输入描述:
输入一个字符串

输出描述:
字符中所有出现的数字前后加上符号“*”,其他字符保持不变

示例
输入

Jkdi234klowe90a3

输出

Jkdi*234*klowe*90*a*3*

题目分析

以字符的方式遍历该字符串,同时进行判断,当满足条件时,拼接到 StringBuilder 上(前后都拼接星号),否则就直接拼接该字符。

如此,最终的结果,在多个连续的数字中间会有2个星号,因此最终做个处理,将其替换为空字符创。

java 代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 表示数字
 */
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String line;
        while((line = br.readLine()) != null){
            StringBuilder sb = new StringBuilder();

            char[] chars = line.toCharArray();
            for (char aChar : chars) {
                if (aChar >= '0' && aChar <= '9') {
                    sb.append("*").append(aChar).append("*");
                } else {
                    sb.append(aChar);
                }
            }

            System.out.println(sb.toString().replace("**", ""));
        }
    }
}

结果

牛客网华为机试【表示数字】_第1张图片

你可能感兴趣的:(牛客网华为机试)