题目: 给定一个正整数,返回它在 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();
    }
 
}


JAVA 之 每日一记 之 算法( 给定一个正整数,返回它在 Excel 表中相对应的列名称。 )的更多相关文章

  1. Excel表列名称(给定一个正整数,返回它在 Excel 表中相对应的列名称。)

    例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ... 示例 1: 输入: 1 输出: "A ...

  2. JAVA 之 每日一记 之 算法( 给你一个Excel表列序号,返回出它对应的数字 )

    代码结果:(只想要代码的可以离开了,代码给你了,绝对能用的.想要思路的往下看.) class Solution { public int titleToNumber(String s) { int a ...

  3. JAVA 之 每日一记 之 算法 ( 长按键入 )

    题目详解: 你的朋友正在使用键盘输入他的名字 name.偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次. 你将会检查键盘输入的字符 typed.如果它对应的可能是你的朋友的 ...

  4. 任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0。

    题目:任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0. 解法一:暴力求解.从1开始查找M,然后判断M*N=X这个数字是否只含有0,1. 解法二:由 ...

  5. 给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 <把一个整数各个数位进行全排列>

    """给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 -> 把一个整数各个数位进行全排列""" # 使用 permu ...

  6. 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。

    谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数. Google2009华南地 ...

  7. SQL将一个表中的某一列值全部插入到另一个表中

    1.  SQL将一个表中的某一列值全部插入到另一个表中 插入的话: insert into a(col) select col from b; 更新的话: update a set col=selec ...

  8. Java实现 蓝桥杯VIP 算法训练 连续正整数的和

    问题描述 78这个数可以表示为连续正整数的和,1+2+3-+12,18+19+20+21,25+26+27. 输入一个正整数 n(<=10000) 输出 m 行(n有m种表示法),每行是两个正整 ...

  9. c#编程:给定一个正整数求出是几位数并逆序输出

    <span style="color:#FF0000;">第一步:把输入的数字转为字符串n.ToString() 第二步:求出字符串的长度即为正整数的位数 第三步:从后 ...

随机推荐

  1. 计算距离2020年圣诞节还有x天x时x分x秒

    //计算两者相差毫秒数 //创建当前时间和圣诞节时间的Date对象 var d1=new Date(); var d2=new Date('2020/12/25'); //计算相差的毫秒 var d= ...

  2. 背单词(AC自动机+线段树+dp+dfs序)

    G. 背单词 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较   题目描述 给定一张包含N个单词的表,每个单词有个价值W.要求从中选出一个子序列使 ...

  3. HCNA Routing&Switching之VLAN间路由

    前文我们了解了二层交换技术vlan相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15091491.html:今天我们来聊一聊不同VLAN间通信相关话题 ...

  4. CF474D Flowers 题解

    题目:CF474D Flowers 传送门 DP?递推? 首先可以很快看出这是一道 DP 的题目,但与其说是 DP,还不如说是递推. 大家还记得刚学递推时教练肯定讲过的一道经典例题吗?就是爬楼梯,一个 ...

  5. http request 请求拦截器,有token值则配置上token值

    // http request 请求拦截器,有token值则配置上token值 axios.interceptors.request.use( config => { if (token) { ...

  6. ElasticSearch进阶检索

    ElasticSearch进阶检索 入门检索中讲了如何导入elastic提供的样本测试数据,下面我们用这些数据进一步检索 一.SearchAPI ES 支持两种基本方式检索 : 1.一种是通过使用 R ...

  7. Java方法01——什么是方法

    例子 package method;public class Demon02 { //main 方法 public static void main(String[] args) { //实际参数:实 ...

  8. C++ //继承中构造和析构顺序

    1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 class Base 6 { 7 pu ...

  9. 多次面试被拒,‘宅家苦修’30天,终获美团offer(含字节跳动/阿里/腾讯等大厂面试题整理)

    背景:双非渣本. 今年由于疫情,上半年一直在家里.2月份本来无忧无虑,呆在家里不给国家添乱的时候,发现身边的同学找到了大厂的offer.心里开始有点慌张.本来想在3月份如果能回到学校,就开始考研之路, ...

  10. Java-Collection、Map及Array之间的转换

    1 List -> Map 设个User类: public class User { private String userName; private String userId; privat ...