小米笔试第二题(号码重排)


import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int count = scan.nextInt();
for(int i=0;i<count;++i){
String str = scan.next();
int[] refer = new int[26];
for(int j=0;j<str.length();++j){
char temp = str.charAt(j);
int num = temp - 'A';
refer[num] += 1;
}
System.out.println(factory(refer));
}
scan.close();
}
public static String factory(int[] refer){
int[] result = new int[10];
int temp = recount(refer);
String[] arr = {"ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE"};
for(int i=0;i<arr.length;++i){
while(isExist(refer, arr[i])){
int real = i-8;
if(real < 0)
real += 10;
result[real] += 1;
}
}
StringBuffer str = new StringBuffer();
for(int i=0;i<result.length;i++){
int a = result[i];
while(a != 0){
str.append(i);
a--;
}
}
return str.toString();
}
public static boolean isExist(int[] refer,String str){
boolean isExist = true;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (refer[c-'A'] == 0) {
isExist = isExist&&false;
}
}
if (isExist) {
for(int i=0;i<str.length();++i){
char c = str.charAt(i);
refer[c- 'A']--;
}
}
return isExist;
}
public static int recount(int[] refer){
int temp = 0;
for(int i=0;i<refer.length;++i){
temp += refer[i];
}
return temp;
}

}

#小米#
全部评论
在0-9中,5个数字有一个唯一的字母,0-Z, 2-W, 4-U, 6-X, 8-G; 剩下的数字1,3,5,7,9中,3-T, 1-O, 5-F, 7-S; 最后剩下的就是9了 根据这个就可以知道字符串中有哪些数字了
点赞 回复 分享
发布于 2016-09-24 09:42
直接用栈不行么
点赞 回复 分享
发布于 2016-09-24 08:17

相关推荐

10-28 15:45
门头沟学院 C++
西南山:海康威视之前不是大规模裁员吗
点赞 评论 收藏
分享
10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务