java 0-9 A-Z进位函数

2023-11-18

java-可以包含数字0-9 和字母A-Z的加法编码规则

例如城市编码:2位,可以是0-9 也可以是A-Z,那么实际编码顺序则是0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G…
A9的下一个编码是AA,AZ的下一个编码是B0,以此类推。
由于没有找到合适的方法,只能手撕一个,写得很烂,应该可以用,有需要自取,有bug麻烦提醒下。。。

 public static void main(String[] strs) {
        String s = "9Z";
        char[] code = s.toCharArray();
        if (code.length > 0) {
            StringBuilder builder = new StringBuilder();
            //0-9 ascll码是48-57 A-Z ascll是65-90
            //加法进位
            int carry = 0;

            for (int i = code.length - 1; i >= 0; i--) {
                int value = 0;
                if (i == code.length - 1) {
                    //末位才需要加一
                    value = 1;
                } else {
                    value = 0;
                }
                int k = (int) code[i];
                if ((k + carry + value) < '9') {//还是数字
                    char c = (char) (k + carry + value);
                    builder.append(c);
                    carry = 0;
                } else if ((k + carry + value) == '9') {
                    //9
                    char c = '9';
                    builder.append(c);
                    carry = 0;
                } else if ((k + carry + value) < 'Z') {
                    if ((k + carry + value) >= 'A') {//本来就是字母,因为最多只能加1
                        //还是字母
                        char c = (char) (k + carry + value);
                        builder.append(c);
                        carry = 0;
                    } else {//从数字跳到字母
                        char c = (char) (k + carry + value - '9' - 1 + 'A');
                        builder.append(c);
                        carry = 0;
                    }

                } else if ((k + carry + value) == 'Z') {
                    //Z
                    char c = 'Z';
                    builder.append(c);
                    carry = 0;
                } else if ((k + carry + value) > 'Z') {
                    //跳回数字,并且进一位
                    char c = '0';
                    builder.append(c);
                    carry = 1;
                    if (i == 0) {
                        //如果已经是最高位了,直接加一位
                        builder.append('1');
                    }
                }
            }
            //用的时候记得builder要倒序一下再用呀!builder.reverse()
            System.out.println(builder.reverse().toString());
        }
    }

上述代码输出结果是
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 0-9 A-Z进位函数 的相关文章

随机推荐

  • 使用python中的随机森林进行数据分类预测

    以下是使用Python中的随机森林进行数据分类预测的示例代码 引入需要的库 from sklearn ensemble import RandomForestClassifier from sklearn model selection i
  • 利用百度AI 合成语音2

    文字合成语音 coding UTF 8 from aip import AipSpeech from playsound import playsound 你的 APPID AK SK APP ID 20232679 API KEY bZc
  • HEVC原理-图像的二维变换与离散余弦变换(DCT)

    最近在做RDOQ算法优化和硬件系统结构设计 建立其时序模型 估算算法的硬件复杂度 在做这部分工作的同时 博主学习了图像的二维变换与离散余弦变换 DCT 总结如下 1 图像的二维离散变换 与一维的有限长离散非周期信号存在傅里叶变换 DFT 一
  • properties文件快速转为yml文件

    只是做了简单的测试 没有考虑过文件里有注释的情况 思想就是先把数据读到map中 然后再保存到新的文件中 public class Test public static void main String args throws Excepti
  • C++ 0x 之移动语义和传导模板实现原理

    文 李博 光宇广贞 C 0x 之左值与右值 文中提到 std forward 和 std move 本文开头对之补充一句 在操作函数返回值或函数参数时 匿名左值仍然为左值 左值可以具名 匿名右值仍然为右值 右值一旦具名成功 立即转变为左值
  • Fping命令解析

    Fping程序类似于ping ping是通过ICMP 网络控制信息协议InternetControl Message Protocol 协议回复请求以检测主机是否存在 Fping与ping不同的地方在于 fping可以在命令行中指定要pin
  • QT_内存

    深度解析QMap与QHash 转载于 http www cnblogs com 5iedu p 5835715 html
  • Redis——持久化数据

    Redis被称为是内存数据库 那是因为它会将其所有数据存储在内存里 因此Redis具有强劲的速度性能 但是 也正因为数据存储在内存中 当Redis重启后 所有存储在内存的数据就会丢失 为了使得数据持久化 Redis提供了两种方式 RDB方式
  • VGG预训练模型网络结构详解——以VGG16为例

    VGG卷积神经网络是牛津大学在2014年提出来的模型 当这个模型被提出时 由于它的简洁性和实用性 马上成为了当时最流行的卷积神经网络模型 它在图像分类和目标检测任务中都表现出非常好的结果 在2014年的ILSVRC比赛中 VGG 在Top
  • Win10环境+ CUDA9.0 +CUDNN7.0+TensorFlow1.7/1.6/1.5配置

    前言 很多小伙伴在选择CUDA版本和cudnn版本上有疑问 这里简短的说一下 希望能帮到各位小伙伴 我在网上看到有人说 要根据自己的显卡来选择CUDA 其实是错误的 你可以下载自己所需要的CUDA版本 这只是个驱动而已 CUDA的版本和cu
  • kubernetes系列二之Deployment的管理和使用

    目录 1 Kubernetes管理对象 Pod ReplicationController 简称RC ReplicaSet 简称RS Deployment 逻辑关系 从小到大的管理逻辑 2 创建Deployment 运行一个Deployme
  • Lack of free swap space on 192.168.3.1

    zabbix健康报错 Lack of free swap space on 192 168 3 1 解决办法 先查看磁盘swap磁盘容量 是因为Zabbix监控没有考虑虚拟主机的交换空间情况 解决办法修改配置 选择 Lack of free
  • easypoi校验数据时获取excel行号和错误信息

    目录 什么是easypoi easypoi校验excel实体类怎么获取错误信息和excel的行号 需要用到的excel实体类 调用的客户端代码 什么是easypoi easypoi功能如同名字easy 主打的功能就是容易 让一个没见接触过p
  • 华为校招机试题- 数组的中心位置-2023年

    题目描述 给你一个整数数组nums 请计算数组的中心位置 数组中心位置是数组的一个下标 其左侧所有元素相乘的积等于右侧所有元素相乘的积 数组第一个元素的左侧积为1 最后一个元素的右侧积为1 如果数组有多个中心位置 应该返回最靠近左边的那一个
  • 修改lvgl Linux demo使用tslib获取触摸坐标

    1 为什么要修改 o 交叉编译官方lvgl linux demo发现触摸坐标不准确 官方demo获取坐标的做法是 evdev fd open EVDEV NAME O RDWR O NOCTTY O NDELAY if evdev fd 1
  • 再谈TCP三次握手/四次挥手

    TCP三次握手 四次挥手 在TCP IP协议中 TCP协议提供可靠的连接服务 采用三次握手建立一个连接 如图1所示 1 第一次握手 建立连接时 客户端A发送SYN包 SYN j 到服务器B 并进入SYN SEND状态 等待服务器B确认 2
  • 比PS还好用!Python 20行代码批量抠图

    抠图前 vs Python自动抠图后 在日常的工作和生活中 我们经常会遇到需要抠图的场景 即便是只有一张图片需要抠 也会抠得我们不耐烦 倘若遇到许多张图片需要抠 这时候你的表情应该会很有趣 Python能够成为这样的一种工具 在只有一张图片
  • cypress——前端自动化测试框架

    前端自动化测试概述 MVC Model View Controller 模式开始流行 MVC是模型 Model 视图 View 和控制器 Controller 的缩写 它使业务逻辑 数据 界面显示分离 这时Web开发属于View层 Ajax
  • Unity InputSystem 实现同一按键单击、双击、长按执行不同逻辑

    最近学习了一下Unity InputSystem 该系统可用于实现 管理复杂的操作逻辑 上限很高 但由于它有一定的学习成本 导致一些和我一样的小白一入门时不得要领 之前卡住我的一个需求就是通过InputSystem 实现同一按键单击 双击
  • java 0-9 A-Z进位函数

    java 可以包含数字0 9 和字母A Z的加法编码规则 例如城市编码 2位 可以是0 9 也可以是A Z 那么实际编码顺序则是0 1 2 3 4 5 6 7 8 9 A B C D E F G A9的下一个编码是AA AZ的下一个编码是B