声明:
今天是第37道题。给定一个正整数,返回它在 Excel 表中相对应的列名称。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除
(手动比心ღ( ´・ᴗ・` ))
正文
题目:给定一个正整数,返回它在 Excel 表中相对应的列名称。
例如表内容如下:
1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ...
示例 1:
输入: 1 输出: "A"示例 2:
输入: 28 输出: "AB"示例 3:
输入: 701 输出: "ZY"
解法1。这道题本质上就是10进制转26进制(用26个字母表示),规则和10进制转2进制是完全一样的,从右数第i位表示
所以用取余的方式获取低位字母,再除以26取整不断向高位迭代,之所以取n-1是因为根据题干要求,输入从1开始,当中涉及到2个API,解释和代码如下。
- chr(int n):ASCII码转字符,chr(65)='A',chr(66)='B',以此类推;
- ord(str char):字符转ASCII码 ord(str),ord('A')=65,ord('B')=66,以此类推;
class Solution(object):
def convertToTitle(self, n):
"""
:type n: int
:rtype: str
"""
if not n:
return False
result = ''
while n != 0: # 这里必须是‘!=0’,不可以是‘<=0’或者‘<0’,亲测
# 此处2个要注意的点:1.chr()是把数字索引转换为对应的字母,ord('A') = 65, chr(65)='A',chr(66)='Z',…以此类推;
# 2.上一轮result结果放在后面,因为题干要求显示成这样,比如28=‘AB’
result = chr((n-1)%26 + ord('A') + result
n = (n-1)/26 # 低位的字母已映射,接下来映射高位的字母
结尾
解法1:https://blog.csdn.net/qq_34364995/article/details/80518205