【问题描述】
小明发明了一种给由全大写字母组成的字符串编码的方法。对于每一个大 写字母,小明将它转换成它在26个英文字母中序号,即A→1,B→2, ... Z→ 26。
这样一个字符串就能被转化成一个数字序列:
比如ABCXYZ→123242526。
现在给定一个转换后的数字序列,小明想还原出原本的字符串。当然这样 的还原有可能存在多个符合条件的字符串。小明希望找出其中字典序最大的字 符串。
【输入格式】
一个数字序列。
【输出格式】
一个只包含大写字母的字符串,代表答案
【样例输入】
123242526
【样例输出】
LCXYZ
【评测用例规模与约定】
对于20%的评测用例,输入的长度不超过20。
对于所有评测用例,输入的长度不超过200000。
标签:小明,26,Scanner,样例,大写字母,字符串,public From: https://blog.csdn.net/qq_51980838/article/details/137286791代码如下:
方法一:
import java.util.Scanner; import java.util.HashMap; public class Main{ public static void main(String[] args) { HashMap<Integer,Character> map=new HashMap<>(); for(int i=1;i<=26;i++) { map.put(i,(char)('A'+i-1)); } Scanner sc=new Scanner(System.in); String s=sc.next(); char[] a=s.toCharArray(); String res=""; for(int i=0;i<s.length();i++) { String s1=""+a[i]+a[i+1]; int i1=Integer.parseInt(s1); if(i1>=1&&i1<=26) { res+=map.get(i1); i++; }else { String s2=""+a[i]; int i2=Integer.parseInt(s2); res+=map.get(i2); } } System.out.println(res); } }
方法二:
import java.util.Scanner; public class Main{ public static void main(String[] args) { char[] a= {'3','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; Scanner scanner=new Scanner(System.in); String i=scanner.next(); char[] c=i.toCharArray(); for(int j=0;j<c.length;j++) { String x=""+c[j]+c[j+1]; int i1=Integer.parseInt(x); if(i1>=1&&i1<=26) { System.out.print(a[i1]); j++; }else { String x2=""+c[j]; int i2=Integer.parseInt(x2); System.out.print(a[i2]); } } } }
【样例输入】
123242526
【样例输出】
LCXYZ