LeetCode Js-171. Excel Sheet Column Number

    LeetCode Js-String

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

    給予一個字串 columnTitle,然後它代表欄位的名稱出現在excel表中。回傳對應的欄位數值。
    

    Example 1:

    Input: columnTitle = "A"
    Output: 1
    

    Example 2:

    Input: columnTitle = "AB"
    Output: 28
    

    Example 3:

    Input: columnTitle = "ZY"
    Output: 701
    

    solution:
    1. 宣告 sum 作為數值計算的變數,以及 EXP 作為數值的次方。
    2. 透過用字串位數來進行迴圈。
    3. 運用 charCodeAt() 來對 columnTitle 的單一字串進行數值轉換。

    依據 ANSI CODE 的轉換,如下:
    A = 65,
    B = 66,
    C = 67
     ...
    X = 88
    Y = 89
    Z = 90
    

    4. 最後透過 EXP 與「sum += 」來完成數值加總。

    A = (65 - 64) * (26 ** 0) //1 * 1 = 1
    
    "A" A = (65 - 64) * (26 ** 1) //1 * 26 = 26
     A "A" = (65 - 64) * (26 ** 0) //1 * 1 = 1
    => 26 + 1 = 27
    

    Code 1:

    var titleToNumber = function(columnTitle) {
        let sum = 0;
        for (let i = 0; i < columnTitle.length; i++) {
            let EXP = columnTitle.length - 1 - i;
            sum += (columnTitle[i].charCodeAt(0) - 64) * (26 ** EXP);
        }
        
        return sum;
    };
    

    FlowChart:
    Example 1

    Input: columnTitle = "A"
    EXP = 26 ** 0
    
    A = (65 - 64) * (26 ** 0) //1 * 1 = 1
    

    Example 2

    Input: columnTitle = "AB"
    EXP = (i = 0) * 26 ** 1 + (i = 1) * 26 * 0
    
    "A" B = (65 - 64) * (26 ** 1) //1 * 26 = 26
     A "B" = (66 - 64) * (26 ** 0) //2 * 1 = 2
    => 26 + 2 = 28
    

    Example 3

    Input: columnTitle = "ZY"
    EXP = (i = 0) * 26 ** 1 + (i = 1) * 26 * 0
    
    "Z" Y = (90 - 64) * (26 ** 1) //26 * 26 = 676
     Z "Y" = (89 - 64) * (26 ** 0) //25 * 1 = 25
    => 676 + 25 = 701
    

    charCodeAt()

    "ABC".charCodeAt(0) // returns 65:"A"
    
    "ABC".charCodeAt(1) // returns 66:"B"
    
    "ABC".charCodeAt(2) // returns 67:"C"
    
    "ABC".charCodeAt(3) // returns NaN