试题 I: 字符串编码
本题总分:25 分
【问题描述】
小明发明了一种给由全大写字母组成的字符串编码的方法。
对于每一个大写字母,小明将它转换成它在 26 个英文字母中序号,
即 A → 1, B → 2, … Z →26。
这样一个字符串就能被转化成一个数字序列:
比如 ABCXYZ → 123242526。
1
现在给定一个转换后的数字序列,小明想还原出原本的字符串。
当然这样的还原有可能存在多个符合条件的字符串。小明希望找出其中字典序最大的字符串。
【输入格式】
一个数字序列。
【输出格式】
一个只包含大写字母的字符串,代表答案
【样例输入】
123242526
1
【样例输出】
LCXYZ
1
【评测用例规模与约定】
对于 20% 的评测用例,输入的长度不超过 20。
对于所有评测用例,输入的长度不超过 200000。
代码如下:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String n=sc.next();
String[] index=new String[27];
for (int i = 1; i <= 26; i++) {
char a=(char)('A'+i-1);
index[i]=String.valueOf(a);
}
ArrayList<String> list=new ArrayList<String>();
int num;
for (int i = 0; i < n.length(); i++) {
String v="";
v=n.substring(i,i+2);
num=Integer.valueOf(v);
if(num<=26) {
list.add(index[num]);
i++;
}else {
list.add(index[Integer.valueOf(n.substring(i,i+1))]);
}
}
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i));
}
}
}