LeeCode每日一题--Excel表列名称

  【前言】坚持日更LeeCode刷题系列

    不积跬步,无以至千里;不积小流,无以成江海。愿与诸君共勉!


  【题目】168.Excel表列名称

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

		  1 -> A
		  2 -> B
		  3 -> C
		  ...
		  26 -> Z
		  27 -> AA
		  28 -> AB 
		  ...

    示例:

    	示例 1:
    		输入: 1
			输出: "A"
 				  			 		
		示例 2:
			输入: 28
			输出: "AB"
			
	    示例 3:
			输入: 701
			输出: "ZY"。

    思路一:什么?这不就是个进制转化问题吗?有什么看的,跳了跳了。不过当我们仔细去看的时候会发现虽然这是个进制转化的问题,但是它的这种转化与我们平常转化有些许不同,举个例子:
         在十进制中,10这个数字,‘1’代表的实际数字为10,因此我们表达10的时候用‘10’
         但是在这个例子中我们表达27的时候用的是‘AA’,因为在当前情况下没有表达0的符号,因此第一个’A‘的数值与’Z‘相等
         那么这种情况下,我们怎么去处理呢?看完编写的代码你就懂了。具体代码如下:

class Solution(object):
    def convertToTitle(self, n):
        """
        :type n: int
        :rtype: str
        """
        result_list = []
        while n:
            result_list.append(chr((n-1)%26+ord('A'))) 
          '''进制转化,注意此时先对n减1取余,而不是我们平常进制转化中的先取余再减一'''
            n = (n-1)//26
        return "".join(result_list[::-1])  

    运行结果:
    在这里插入图片描述

    说明:如果你还没有弄清楚刚才的进制转化,不妨拿个样例来试下,对比下平常我们进制转化下的做法与当前做法。


    分享就到这里了,欢迎大家一起交流讨论。


    注明

    题目来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/excel-sheet-column-title

发布了32 篇原创文章 · 获赞 62 · 访问量 1292

猜你喜欢

转载自blog.csdn.net/Mingw_/article/details/104803650