华为-表示数字
(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);
}
}
}
查看19道真题和解析