LeetCode Notes: Excel Sheet Column Number

Question

Given a string columnTitle that represents the column title as appear in an Excel sheet, return its corresponding column number.

For example:

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

Example 1:

Input: columnTitle = "A"

Output: 1

Example 2:

Input: columnTitle = "AB"

Output: 28

Example 3:

Input: columnTitle = "ZY"

Output: 701

Example 4:

Input: columnTitle = "FXSHRXW"

Output: 2147483647

Constraints:

  • 1 <= columnTitle.length <= 7
  • columnTitle consists only of uppercase English letters.
  • columnTitle is in the range ["A", "FXSHRXW"].

For questions of the same type, please refer to

LeetCode Notes: Excel Sheet Column Title

Solution

Analysis:

  1. Reverse the string and convert it to an array traversal
  2. Convert the character into a number from 1 to 26, and handle the carry according to the number of digits in the character

Code:

/**
  * @param {string} columnTitle
  * @return {number}
  */
var titleToNumber = function(columnTitle) {
         let result = 0;
         // Reverse the string and turn it into an array for traversal
         columnTitle.split('').reverse().forEach((item,i)=>{
            
             // The character is converted to UTF-16 code index value minus 64 to get the index value starting from 1, multiplying the i square of 26
             // such as'BBA' => 2 * 26^2 + 2 * 26^1 + 1 * 26 ^0
             result += (item.charCodeAt()-64) * Math.pow(26,i)
         })

         return result
};

Reference

Comments