第八题:字符串编码(20分)
题目描述
小明发明了一种给由全大写字母组成的字符串编码的方法。对于每一个大写字母,小明将它转换成它在 26 个英文字母中序号,即 A → 1, B → 2, … Z →26。这样一个字符串就能被转化成一个数字序列:比如 ABCXYZ → 123242526。现在给定一个转换后的数字序列,小明想还原出原本的字符串。当然这样的还原有可能存在多个符合条件的字符串。小明希望找出其中字典序最大的字
符串。
【输入格式】
一个数字序列。
【输出格式】
一个只包含大写字母的字符串,代表答案
【样例输入】
123242526
【样例输出】
LCXYZ
【评测用例规模与约定】
对于 20% 的评测用例,输入的长度不超过 20。
对于所有评测用例,输入的长度不超过 200000。
题目分析
题目代码
public class B_2020_numStringTomaxLetterString {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String aString = scanner.next();
scanner.close();
String buffer = null;
String res = "";
for(int i = 0; i < aString.length(); i++) {
char a = aString.charAt(i);
if(buffer != null) {
buffer+=a;
int b = Integer.parseInt(buffer);
res+=(char)('A'- 1 + b);
buffer = null;
continue;
}
else if(a == '1' || a == '2') {
buffer = a+"";
continue;
}
else {
res += (char)('A' - 1 + Integer.parseInt(a+""));
}
}
System.out.println(res);
}
}