Leetcode: Excel Sheet Column Title

来源:互联网 发布:java如何调用接口 编辑:程序博客网 时间:2024/06/05 21:08

Question

Given a positive integer, return its corresponding column title as appear in an Excel sheet.

For example:

1 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> AB 

Credits:
Special thanks to @ifanchu for adding this problem and creating all test cases.

Hide Tags Math


Analysis

This problem is to convert 1-26 to A-Z. Commonly, this kind of problem using ‘mod’ is in range [0,25].

The general equation is

an26n+an126n1+...+a1261+a0

where ai[1,26]

Each time we get the last digit by computing d=n%26. To convert it to be [0,25], we have to decrease the last digit of n by 1.
For example, after get d=a01, we do n = n/26, so we have

an26n1+an126n2+...+a1

So by doing d=(n-1)%26, we get the number[0,25] for a1.

See solution v2


Solution

v1

The idea of this solution is to lend carry=1 to the lower digit if it is 26.

class Solution:    # @param {integer} n    # @return {string}    def convertToTitle(self, n):        res = []        if n<=0:            return res         while(n>0):            d = n%26            n = n/26            if d==0:                d = 26                n = n -1             res = [ str(unichr(d+64)) ] + res        return "".join(res)

v2

This is general solution

class Solution:    # @param {integer} n    # @return {string}    def convertToTitle(self, n):        res = []        if n<=0:            return res         while(n>0):            d = (n-1)%26            res = [ str(unichr(d+65)) ] + res            n = n/26        return "".join(res)


0 0
原创粉丝点击