替换数字
时间限制:1.000S 空间限制:128MB
题目描述
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。 例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。
输入描述
输入一个字符串 s,s 仅包含小写字母和数字字符。
输出描述
打印一个新的字符串,其中每个数字字符都被替换为了number
输入示例
java
a1b2c3
输出示例
java
anumberbnumbercnumber
提示信息
数据范围:
解法一(模拟)
思路分析:
根据题目意思,直接暴力模拟即可,首先读取输入的字符串,然后对字符串进行遍历,若发现字符串属于数字字符,则将其替换为
number
遍历完读取的字符串后,返回结果字符串
实现代码如下:
java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.StringTokenizer;
/**
* 54. 替换数字(第八期模拟笔试)
* @author 花木凋零成兰
*
*/
public class Main{
public static void main(String[] args) throws IOException {
// Scanner scanner = new Scanner(System.in);
String s = Reader.nextLine(); // 读取字符串
int n = s.length(); // 字符串的长度
// StringBuilder ans = new StringBuilder(); // 返回结果字符串
int count = 0; // 记录数字字符个数
for (int i = 0; i < n; ++i) {
char ch = s.charAt(i);
if (ch >= '0' && ch <= '9') { // 若为数字字符 则计数
++ count;
}
}
int len = n + count*5;
char[] ans = new char[len];
int index = 0;
for (int i = 0; i < n; ++i) {
char ch = s.charAt(i);
if (ch >= '0' && ch <= '9') { // 若为数字字符 则替换为number
ans[index++] = 'n';
ans[index++] = 'u';
ans[index++] = 'm';
ans[index++] = 'b';
ans[index++] = 'e';
ans[index++] = 'r';
} else {
ans[index++] = ch;
}
}
// System.out.println(new String(ans));
PrintWriter out = new PrintWriter(System.out); // 快速输出
out.println(new String(ans));
out.flush();
}
}
/**
* 快读
*/
class Reader {
static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer tokenizer = new StringTokenizer("");
static String nextLine() throws IOException {// 读取下一行字符串
return reader.readLine();
}
static String next() throws IOException { // 读取下一个字符串
while (!tokenizer.hasMoreTokens()) {
tokenizer = new StringTokenizer(reader.readLine());
}
return tokenizer.nextToken();
}
static int nextInt() throws IOException {// 读取下一个int型数值
return Integer.parseInt(next());
}
static double nextDouble() throws IOException {// 读取下一个double型数值
return Double.parseDouble(next());
}
}
提交结果如下:
text
time_space_table:
/1064/sample.in:AC mem=11264k time=114ms
/1064/test1.in:AC mem=11352k time=116ms
/1064/test2.in:AC mem=11352k time=113ms
/1064/test3.in:AC mem=11364k time=115ms
/1064/test4.in:AC mem=11364k time=110ms
/1064/test5.in:AC mem=11376k time=115ms
/1064/test6.in:AC mem=11376k time=111ms
/1064/test7.in:AC mem=11376k time=113ms
/1064/test8.in:TLE mem=11428k time=117ms
复杂度分析:
- 时间复杂度:
- 空间复杂度: