【题解】字符串编码

【问题描述】

小明发明了一种给由全大写字母组成的字符串编码的方法。
对于每一个大写字母,小明将它转换成它在 26 个英文字母中序号,即 A → 1, B → 2, … Z →26。
这样一个字符串就能被转化成一个数字序列:比如 ABCXYZ → 123242526。
现在给定一个转换后的数字序列,小明想还原出原本的字符串。
当然这样的还原有可能存在多个符合条件的字符串。小明希望找出其中字典序最大的字符串。

【输入格式】

一个数字序列。

【输出格式】

一个只包含大写字母的字符串,代表答案

【样例输入】

123242526

【样例输出】

LCXYZ

解题思路

  1. 遍历最近的两个字符串,判断其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

posted @   Gonfei  阅读(142)  评论(0编辑  收藏  举报
编辑推荐:
· .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 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示