Leetcode 171. Excel Sheet Column Number

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 


思路:首先看
A: 1 * 26 ^ 0;
B: 2 * 26 ^ 0;
...
AA: 1 * 26 ^ 1 + 1 * 26 ^ 0 = 27;
AB: 1 * 26 ^ 1 + 2 * 26 ^ 0 = 28;
...
BA: 2 * 26 ^1 + 1 * 26 ^ 0 = 53;
...
规律就是假如是一个长度为2的字符串,那么对应的数为:(s[0] - 'A' +1) * 26 ^ 1 + (s[1] - 'A' + 1) * 26 ^ 0;
假如是长度为n的字符串,那么对应的数为:(s[0] - 'A' + 1) * 26 ^ (n-1) + ... + (s[n-1] - 'A' + 1) * 26 ^ 0;
。。。好吧,由此可以看出,这是求一个n-1次多项式的和
一种方法就是直接求出每一项的值,再求和。这里时间复杂度是很高的,因为26 ^ (n-1)重复计算了。
还有一种方法就是利用霍纳法则(也就是秦九韶算法)了。(可在文章分类-算法分析中找到有关霍纳法则的具体原理)。
 1 class Solution {
 2 public:
 3     int titleToNumber(string s) {
 4         int len = s.length();
 5         int ans = 0;
 6         for(int i = 0; i < len; i++){
 7             int tmp = s[i] - 'A' + 1;
 8             ans = ans * 26 + tmp;
 9         }
10         return ans;
11     }
12 };

 



posted @ 2016-09-07 10:21  琴影  阅读(169)  评论(0编辑  收藏  举报