描述
继MIUI8推出手机分身功能之后,MIUI9计划推出一个电话号码分身的功能:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替 ("ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"), 然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。
输入描述:
第一行是一个整数T(1 ≤ T ≤ 100)表示测试样例数;接下来T行,每行给定一个分身后的电话号码的分身(长度在3到10000之间)。
输出描述:
输出T行,分别对应输入中每行字符串对应的分身前的最小电话号码(允许前导0)。
示例1
输入:
4 EIGHT ZEROTWOONE OHWETENRTEO OHEWTIEGTHENRTEO
输出:
0 234 345 0345
解题思路:
首先,我们需要将分身后的电话号码转换为分身前的最小电话号码。我们可以通过将分身后的电话号码中的字母转换为数字,然后将数字减去8,再将结果转换为电话号码的形式来实现。
具体步骤如下:
1. 将分身后的电话号码中的字母转换为数字。
2. 将数字减去8。
3. 将结果转换为电话号码的形式。
代码如下:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt();
for (int i = 0; i < t; i++) {
String s = scanner.next();
String result = "";
for (int j = 0; j < s.length(); j++) {
char c = s.charAt(j);
int num = getNumber(c);
num -= 8;
if (num < 0) {
num += 10;
}
result += num;
}
System.out.println(result);
}
}
public static int getNumber(char c) {
switch (c) {
case 'Z':
return 0;
case 'O':
return 1;
case 'T':
return 2;
case 'W':
return 3;
case 'F':
return 4;
case 'I':
return 5;
case 'S':
return 6;
case 'E':
return 7;
case 'N':
return 8;
case 'R':
return 9;
default:
return -1;
}
}
}
```