通过全部用例
运行时间13ms
占用内存9568KB
描述
将一个字符串中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。
数据范围:字符串长度满足 1 \le n \le 100 \1≤n≤100
输入描述:
输入一个字符串
输出描述:
字符中所有出现的数字前后加上符号“*”,其他字符保持不变
示例1
输入:
Jkdi234klowe90a3
输出:
Jkdi*234*klowe*90*a*3*
复制此段代码,取代之前的静态方法,运行(推荐在IDEA上运行)
对您有帮助的话,请给个一键三连,您的支持是我最大的动力!!!
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
//基于可变char[],非线程安全的,速度最快
StringBuilder sb = new StringBuilder();
//添加第一个元素
if((str.charAt(0)-'0'>=0)&&(str.charAt(0)-'0'<=9)){
sb.append("*"+str.charAt(0));
}else {
sb.append(str.charAt(0));
}
char[] c = str.toCharArray();
for(int i=1;i<c.length;i++){
//sb字符串的最后一个字符
char last = sb.charAt(sb.length()-1);
//两个字符串相减或相加,会自动转行成int类型来做运算,结果为int类型
//如果c[i]是0到9之间的数字
if((c[i]-'0'>=0)&&(c[i]-'0'<=9)){
//判断当前sb最后一位是为数字
if ((last-'0'>=0)&&(last-'0'<=9)){
sb.append(c[i]);
//如果最后一位是数字
if(i==(c.length-1)){
sb.append("*");
}
continue;
}else {
//当前sb最后一位不是数字
sb.append("*"+c[i]);
//如果最后一位是数字
if(i==(c.length-1)){
sb.append("*");
}
continue;
}
}else {//如果c[i]不是数字
//判断当前sb最后一个字符是数字
if ((last-'0'>=0)&&(last-'0'<=9)){
sb.append("*"+c[i]);
continue;
}else {
//当前sb最后一位不是数字
sb.append(c[i]);
}
}
}
str = sb.toString();
System.out.println(str);
}