✅创作者:陈书予
🎉个人主页:陈书予的个人主页
🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区
🌟专栏地址: Java华为OD机试真题(2022&2023)
文章目录
- 1. 题目描述
- 2. 输入描述
- 3. 输出描述
- 4. Java算法源码
- 5. 测试
- 6.解题思路
1. 题目描述
将一个字符串中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。
数据范围:字符串长度满足1≤n≤100 。
2. 输入描述
输入一个字符串。
3. 输出描述
字符中所有出现的数字前后加上符号“*”,其他字符保持不变。
4. Java算法源码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
System.out.println(markNum(sc.nextLine()));
}
}
private static String markNum(String pInStr) {
StringBuilder res = new StringBuilder();
for (int i = 0; i < pInStr.length(); ) {
if (pInStr.charAt(i) >= '0' && pInStr.charAt(i) <= '9') {
res.append('*');
while (i < pInStr.length() && pInStr.charAt(i) >= '0' && pInStr.charAt(i) <= '9') {
res.append(pInStr.charAt(i++));
}
res.append('*');
} else {
res.append(pInStr.charAt(i++));
}
}
return res.toString();
}
5. 测试
6.解题思路
- 读取输入,将字符串存储在变量
pInStr
中。 - 创建一个
StringBuilder
对象res
用于存储结果。 - 遍历字符串pInStr的每个字符,判断是否为数字。
- 如果当前字符是数字,则在
res
中添加字符'*'
。 - 接着,将连续的数字添加到
res
中,直到遇到非数字字符为止。 - 最后,在
res
中添加字符'*'
。 - 如果当前字符不是数字,则直接将其添加到
res
中。
- 如果当前字符是数字,则在
- 将
res
转换为字符串并返回作为结果。