Welcome to Subscribe On Youtube

Question

Formatted question description: https://leetcode.ca/all/168.html

Given an integer columnNumber, return its corresponding column title as it appears in an Excel sheet.

For example:

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

 

Example 1:

Input: columnNumber = 1
Output: "A"

Example 2:

Input: columnNumber = 28
Output: "AB"

Example 3:

Input: columnNumber = 701
Output: "ZY"

 

Constraints:

  • 1 <= columnNumber <= 231 - 1

Algorithm

For numbers less than 26, then we only need to take the remainder of 26, then subtract 1 and add the character A.

Code

  • 
    public class Excel_Sheet_Column_Title {
    
        class Solution {
            public String convertToTitle(int n) {
    
                if (n <= 0) {
                    return "";
                }
    
                StringBuilder sb = new StringBuilder();
                while (n > 0) {
    
                    // @note: key is, not n, but n-1
                    int remainder = (n - 1) % 26;
                    sb.insert(0, (char)('A' + remainder)); // @note: reverse order
    
                    n = (n - 1) / 26;
                }
    
                return sb.toString();
            }
        }
    }
    
    ############
    
    class Solution {
        public String convertToTitle(int columnNumber) {
            StringBuilder res = new StringBuilder();
            while (columnNumber != 0) {
                --columnNumber;
                res.append((char) ('A' + columnNumber % 26));
                columnNumber /= 26;
            }
            return res.reverse().toString();
        }
    }
    
  • class Solution:
        def convertToTitle(self, columnNumber: int) -> str:
            res = []
            while columnNumber:
                columnNumber -= 1
                res.append(chr(ord('A') + columnNumber % 26))
                columnNumber //= 26
            return ''.join(res[::-1])
    
    ############
    
    class Solution(object):
      def convertToTitle(self, n):
        """
        :type n: int
        :rtype: str
        """
        ans = ""
        while n > 0:
          y = n % 26
          if y == 0:
            char = "Z"
            n -= 26
          else:
            char = chr(ord("A") + y - 1)
          ans += char
          n = n / 26
        return ans[::-1]
    
    
  • func convertToTitle(columnNumber int) string {
    	res := []rune{}
    	for columnNumber != 0 {
    		columnNumber -= 1
    		res = append([]rune{rune(columnNumber%26 + int('A'))}, res...)
    		columnNumber /= 26
    	}
    	return string(res)
    }
    
    
  • function convertToTitle(columnNumber: number): string {
        let res: string[] = [];
        while (columnNumber > 0) {
            --columnNumber;
            let num: number = columnNumber % 26;
            res.unshift(String.fromCharCode(num + 65));
            columnNumber = Math.floor(columnNumber / 26);
        }
        return res.join('');
    }
    
    
  • public class Solution {
        public string ConvertToTitle(int columnNumber) {
            StringBuilder res = new StringBuilder();
            while (columnNumber != 0) {
                --columnNumber;
                res.Append((char) ('A' + columnNumber % 26));
                columnNumber /= 26;
            }
            return new string(res.ToString().Reverse().ToArray());
        }
    }
    

All Problems

All Solutions