题目: 给定一个正整数,返回它在 Excel 表中相对应的列名称。

例如:

1 -> A
2 -> B
3 -> C
...
26 -> Z

27 -> AA
28 -> AB

29-> AC
...

52->AZ

需要的结果:

例如:

输入: 1
输出: "A"

输入: 28
输出: "AB"

输入: 701
输出: "ZY"

整体思路:
因为 题目 给的是 A = 1, 和 Excel 表格 A 是第一格正好对应,26会对应 Z,27 会 对应 AA, 因此例如上面所示, 28 会 等于 AB
【 如果还没明白请建立一个 Excel 表格,看一下字母排序。 】

解题的关键点在于说 别人给出一个正整数,是否有取余剩下的余数;
如果没有,n(别人给出的整数) 会等于 字母排序的 最后一个;
如果有, 余数 会等于是字母排序中的第几个。

题目考点: 10 进制 转换 成 26 进制来表示

结果:
class Solution { // JAVA 建立一个类
 
    public String convertToTitle(int n) {  // 写一个公开的方法,用于调用 和 传参进来计算结果
        StringBuilder sb = new StringBuilder();
//  Java 的 StringBuffer insert()方法将数据插入此StringBuffer的子字符串中。 应该指定需要在其中插入数据的偏移值(整数类型)。 使用该方法,可以插入诸如整数,字符,字符串等各种类型的数据。
        while (n > 0) { // 只要 n 不小于 0,那么就会进入这个死循环 
            int c = n % 26;  // 用 c 来获取 n % 26 之后剩余的 余数, 剩余的余数 c 就是 对应的第几位
            if(c == 0){ // 如果 c 刚好等于0,则表示 n % 26 没有 余数,c 等于 最后一个 字母排序
                c = 26; // 例子: n = 26, c = 0,则 c = Z 
     n = n -1 ; // 如果 n 不 减 1, 则会产生结果是 多出一位。例如: 26 结果会是 AZ,也就是说会多出 A 
                // 因为数组是 从 0开始的,也就是说 25会等于 Z,如果不 -1 ,则会默认 插入 26 的 A ,结果就是变成 AZ
    
            }
            sb.insert(0, (char) ('A' + c - 1)); // StringBuilder 的 insert 插入方法,插入 字符串,如果这里  c 不去 -1,那么由于插入的是字符串,会获取不到 第一位的字母  
    // 同理。如果 c 不 -1, 由于  十进制的关系 只有 0-25, 所以 26 会获取到 A,拼接在一起就是 AZ,如果 -1了则刚好是获取到 26个字母中的最后一位
            n /= 26; // n /= 26 只有等于 0 才会跳转 while 循环,由于是 int 类型, 所以所有的小数点会被强制转换为 整数
        }
        return sb.toString();
    }
 
}


最新文章

  1. C# RSA加密解密
  2. vs code插件记录
  3. github设置只识别指定类型的文件
  4. 字符串s中从第i个位置起取长度为len的子串,函数返回子串链表
  5. 5.Android之image控件学习
  6. 一个for列出横纵坐标
  7. html a 链接
  8. java设计模式类图大全
  9. 图表框架HelloCharts(2)柱状图
  10. 奇异秀App:奇异秀秀奇异,用大头视频来拜年
  11. 循序渐近学docker---笔记
  12. undefined reference to `png_set_longjmp_fn'
  13. 使用VS Code从零开始开发调试.NET Core 1.1
  14. flink源码编译(windows环境)
  15. status 返回当前请求的http状态码
  16. Go开发之路 -- strings以及strconv的使用
  17. Android 屏幕适配问题分析
  18. iOS-常用的两个弹簧动画pop
  19. 自己写的browse.bat与perl写的url_handler.pl的比较
  20. HttpWebRequest 跳转后(301,302)ResponseUri乱码问题

热门文章

  1. 第十二篇 -- 如何向MFC对话框添加菜单
  2. Python - 浅拷贝的四种实现方式
  3. css问题记录
  4. mysql中的with rollup得到group by的汇总信息
  5. Thinkphp中取消url中的index.php 和 Home 默认模块
  6. Hadoop 3.1.1 - Yarn - 使用 CGroups
  7. 终于彻底搞清楚了spin-lock 之一次CPU问题定位过程总结
  8. Mybatis学习笔记-配置解析
  9. HttpRunner3源码阅读:7.响应后处理 response.py
  10. C++ 二进制文件 读 写文件