茂名企业网站开发,在线课堂手机网站模板,煤棚网架公司,百度广告投放这道题一开始以为是简单的进制转换问题#xff0c;用的以往的思路#xff0c;对于一般性的进制转换题目#xff0c;只需要不断地对 columnNumber 进行 % 运算取得最后一位#xff0c;然后对 columnNumber 进行 / 运算#xff0c;将已经取得的位数去掉#xff0c;直到 col… 这道题一开始以为是简单的进制转换问题用的以往的思路对于一般性的进制转换题目只需要不断地对 columnNumber 进行 % 运算取得最后一位然后对 columnNumber 进行 / 运算将已经取得的位数去掉直到 columnNumber 为 0 即可。 但是这里可不是这样比如 26 是 Z52 是 AZ因为这里是从 1 开始表示的没有从 0 开始。所以我就进行了一个判断因为出现 0 的情况只会在 columnNumber 能整除 26 的时候出现其他情况下还是可以使用以往的思路的
class Solution(object):def convertToTitle(self, columnNumber)::type columnNumber: int:rtype: strans # 使用字典推导式创建映射字典mapping {i - 64: chr(i) for i in range(65, 91)}while columnNumber 0:if columnNumber % 26 0:ans mapping[26] anscolumnNumber - 26else:ans mapping[columnNumber % 26] anscolumnNumber columnNumber // 26return ans题解用的是数学的方法很巧妙总体的意思就是和正常 0~25 的 26 进制相比本质上就是每一位多加了 1。假设 A 0B 1那么 AB 26 * 0 1 * 1而现在 AB 26 * (0 1) 1 * (1 1)所以只要在处理每一位的时候减 1就可以按照正常的 26 进制来处理。 class Solution(object):def convertToTitle(self, columnNumber)::type columnNumber: int:rtype: strans # 使用字典推导式创建映射字典mapping {i - 64: chr(i) for i in range(65, 91)}while columnNumber 0:a (columnNumber - 1) % 26 1ans mapping[a] anscolumnNumber (columnNumber - a) // 26return ans