题目
小明发明了一种给由全大写字母组成的字符串编码的方法。对于每一个大
写字母,小明将它转换成它在 26 个英文字母中序号,即 A → 1, B → 2, … Z →
26。
这样一个字符串就能被转化成一个数字序列:
比如 ABCXYZ → 123242526。
现在给定一个转换后的数字序列,小明想还原出原本的字符串。当然这样
的还原有可能存在多个符合条件的字符串。小明希望找出其中字典序最大的字
符串。
【样例输入】
123242526
【样例输出】
LCXYZ
思路
输入采用 split("")双引号里面不写直接转数组+integer.parseint()
由于26个字母循环容易越界,所以直接把crr开50,根据brr长度循环
字典序最大(让第一个字母为z最大):从头开始能连个数字组成一个两位数最好,但是若大于26就只能然10以下
代码
package october12;
import java.util.Scanner;
public class 字典序 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String arr=sc.nextLine();
String brr[]=arr.split("");
int crr[]=new int [50];
for(int i=0;i<brr.length;i++)
{
crr[i]=Integer.parseInt(brr[i]);
}
for(int i=0;i<brr.length;i++)
{
System.out.println(crr[i]);
}
String drr[]=new String[]{"A","B","C","D","E","F","G","H","I","G","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
for(int i=0;i<brr.length;i++)
{
if((crr[i]*10+crr[i+1])<=26)
{
System.out.print(drr[crr[i]*10+crr[i+1]-1]);
i=i+1;
}
else System.out.print(drr[crr[i]-1]);
}
}
}
本文介绍了一种用于将数字序列还原为原始大写字母字符串的算法。该算法旨在找到字典序最大的字符串,通过分析数字序列并考虑字母在英语字母表中的位置实现。文章提供了具体的实现代码,展示了如何处理输入数据,并解释了如何根据数字序列生成对应的字母。
1628

被折叠的 条评论
为什么被折叠?



