华为-表示数字
(java实现)
题目描述:
将一个字符中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。
注意:本题有多组样例输入。
输入描述:
输入一个字符串
输出描述:
字符中所有出现的数字前后加上符号“*”,其他字符保持不变
示例1:
输入
Jkdi234klowe90a3 5151
输出
Jkdi*234*klowe*90*a*3* *5151*
问题分析:
思路一:直接
相关知识:
略
参考代码:
思路一实现:每个字符进行添加
思路二:使用正则表达式。
import java.util.*; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); while (input.hasNext()) { String line = input.nextLine(); //String line = input.nextLine(); StringBuilder res = new StringBuilder(); char[] ch = line.toCharArray(); int i = 0; boolean flag = false; while (i<ch.length) { if (!flag) { if (ch[i]>='0' && ch[i]<='9') //digit { res.append("*"); flag = true; } res.append(ch[i]); }else { if (ch[i]<'0' || ch[i]>'9') //letter { res.append("*"); flag = false; } res.append(ch[i]); } /* if (ch[i]>='0' && ch[i]<='9' && !flag) { res.append("*"+ch[i]); flag = true; }else if (ch[i]>='0' && ch[i]<='9' && flag) { res.append(ch[i]); flag = true; } else if (!flag) { res.append(ch[i]); }else { res.append("*"+ch[i]); flag = false; } //*/ i++; } if (ch[i-1]>='0' && ch[i-1]<='9') { res.append("*"); } System.out.println(res); } } }
思路二实现:
import java.util.*; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); while (input.hasNext()) { String line = input.nextLine(); String res = line.replaceAll("([0-9]+)","*$1*"); //需要括号 //String res = line.replaceAll("(\\d+)","\\*$1\\*"); System.out.println(res); } } }