Try   HackMD

【LeetCode】 171. Excel Sheet Column Number

Description

Given a 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 
​​​​...

給予一個出現在Excel表格的欄位標題,回傳它對應的欄位數字。
例如:

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

Example:

Example 1:

Input: "A"
Output: 1


Example 2:

Input: "AB"
Output: 28


Example 3:

Input: "ZY"
Output: 701

Solution

  • 把它當作一個26進制的轉換程式。
  • 在數位邏輯中,我們知道
    numbase(n)=digit_numberndigit
    • 數字等於位元的數字 * 基底 ^ 位元數所有位元的總和。
  • 所以先把A-Z轉換成1-26,然後跑每個位元乘上26^第幾位元,全部加總就好了。
  • 有不懂的可以去看一下16進制轉10進制等,道理是一樣的。

Code

class Solution { public: int titleToNumber(string s) { int sum = 0; for(int i = 0; i < s.length(); i++) { sum += pow(26, i) * (s[s.length() - 1 - i] - 'A' + 1); } return sum; } };
tags: LeetCode C++