题目描述
输入一个整数,输出该整数对应的中文读法。
- 负数输出 "fu"
- 正数按如下规则输出每个数字:ling yi er san si wu liu qi ba jiu
输入输出格式
输入:一个整数 N(-10^9 <= N <= 10^9)
输出:该整数的中文读法,数字之间用空格分隔
样例
输入
-600
输出
fu liu ling ling
解题思路
- 处理负数,输出 "fu" 并取绝对值
- 将整数转换为字符串,逐字符转换为中文读法
- 用空格连接输出
代码实现
Java
import java.util.Scanner;
public class Main {
static String[] num = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
if (n < 0) {
System.out.print("fu ");
n = -n;
}
String s = String.valueOf(n);
for (int i = 0; i < s.length(); i++) {
if (i > 0) System.out.print(" ");
System.out.print(num[s.charAt(i) - '0']);
}
}
}
Python
num = ["ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"]
n = input().strip()
if n.startswith('-'):
print("fu", end=" ")
n = n[1:]
print(" ".join(num[int(d)] for d in n))
复杂度分析
- 时间复杂度:O(k),k 为数字位数
- 空间复杂度:O(1)
总结
本题主要考察字符串处理和数组映射。核心是建立数字到中文读法的映射关系。