【题解】字符串编码
【问题描述】
小明发明了一种给由全大写字母组成的字符串编码的方法。
对于每一个大写字母,小明将它转换成它在 26 个英文字母中序号,即 A → 1, B → 2, … Z →26。
这样一个字符串就能被转化成一个数字序列:比如 ABCXYZ → 123242526。
现在给定一个转换后的数字序列,小明想还原出原本的字符串。
当然这样的还原有可能存在多个符合条件的字符串。小明希望找出其中字典序最大的字符串。
【输入格式】
一个数字序列。
【输出格式】
一个只包含大写字母的字符串,代表答案
【样例输入】
123242526
【样例输出】
LCXYZ
解题思路
- 遍历最近的两个字符串,判断其ascll是否满足条件。
ASCll码表
【代码】
public class topic08 {
static String set = "123242526"; // 题目输入案例
static StringBuilder res = new StringBuilder(); // 存放结果
public static void main(String[] args) {
char[] arrChar = set.toCharArray();
for (int i = 0; i < arrChar.length; i++) {
int ascll = Integer.parseInt(String.valueOf(arrChar[i]) + arrChar[1 + i]) + 64;
if (i < arrChar.length - 1) {
// 判断组合数字是否超过大写字母ascll
if (ascll <= 90) {
char letter = (char) ascll;//int转char字符
res.append(letter);
i++; // 组合数字满足,i向后移动一个
} else {
// 超过则不使用组合数字,用原单数 + 16 = ascll 大写字母
char letter = (char) (arrChar[i] + 16);
res.append(letter);
}
} else { // 处理列表的最后一个字符
char letter = (char) (arrChar[i] + 16);
res.append(letter);
}
}
System.out.println(res);
}
}
结果
LCXYZ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?