题目:将一个字符串中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。 数据范围:字符串长度满足 1≤n≤100 输入描述: 输入一个字符串 输出描述: 字符中所有出现的数字前后加上符号“*”,其他字符保持不变
示例: 输入: Jkdi234klowe90a3 输出: Jkdi*234*klowe*90*a*3*
public class Demo15 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String s = in.nextLine();
System.out.println(addAsterisksToNumbers(s));
}
}
public static String addAsterisksToNumbers(String inputString) {
StringBuilder result = new StringBuilder(); // 创建result变量,作为最终结果
boolean lastWasDigit = false;
for (char c : inputString.toCharArray()) {
if (Character.isDigit(c)) { // 当前字符是数字
if (!lastWasDigit) { // 当上一个字符不是数字,并且当前字符是数字的时候,说明这是一个数字的开始,要在当前数字前加*
result.append("*");
}
result.append(c);
lastWasDigit = true;
} else { // 当前字符不是数字
if (lastWasDigit) { // 当上一个字符是数字,并且当前字符不是数字,说明数字结束,需要在数字后加*
result.append("*");
}
result.append(c);
lastWasDigit = false;
}
}
// Check and append trailing asterisk if necessary
if (lastWasDigit) { // 不要忘了检查最后一个字符,最后一个字符如果是数字需要在后边加*
result.append("*");
}
return result.toString();
}
}
如果大家需要视频版本的讲解,欢迎关注我的B站: