首页 > 其他 > 详细

LeetCode 171 Excel Sheet Column Number(Excel的列向表数字)

时间:2016-01-11 22:15:58      阅读:272      评论:0      收藏:0      [点我收藏+]

翻译

给定一个出现在Excel表格上的列表标题,返回它的正确行数。  

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

原文

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 

分析

有了上一题的经验,这次要容易得多了。它的题意也能理解了,就是从上面的实例左侧字符转换成右侧的数字。大家可以看看上一题:LeetCode 168 Excel Sheet Column Title(Excel的列向表标题)

下面是上一题的博客截图,我举了一个进制转换的例子,但是没有说的很明确,那么就在这一题里充分说明一下好了,大家请继续往下看。

技术分享

技术分享

相信有了这个示例,大家就可以秒懂了。

然后我就写了如下代码:

#include <iostream>
using namespace std;

int exponent(int x, int y) {
    int answer = 1;
    for(int i = 0; i < y; ++ i) {
        answer *= x;
    }
    return answer;
}

int titleToNumber(string s) {
    int n = 0, len = s.length();
    for(int i = 0; i < s.length(); ++ i) {
        char c = s[i];
        int chara = c - ‘A‘ + 1;
        n += chara * exponent(26, len - 1 - i);
    }
    return n;
}

int main() {
    cout<<titleToNumber("AAB");
    return 0;
}

输出结果是

704

这是正确的,后来我改成了如下代码:

#include <iostream>
#include <cmath>
using namespace std;

int titleToNumber(string s) {
    int n = 0, len = s.length();
    for(int i = 0; i < s.length(); ++ i) {
        char c = s[i];
        int chara = c - ‘A‘ + 1;
        n += chara * pow(26, len - 1 - i);
    }
    return n;
}

int main() {
    cout<<titleToNumber("AAB");
    return 0;
}

输出是:

703

于是我就纳闷了,后来我从CodeBlocks换到饿了Visual Studio就成了704了,704是正确的。

技术分享

而在CB中把代码改成:

n += chara * (int)pow(26.0, len - 1 - i);

结果反而成了702了。

希望大家发现问题的在下面留言告诉我啊……

代码

class Solution {
public:
    int titleToNumber(string s) {
        int n = 0, len = s.length();
        for (int i = 0; i < s.length(); ++i) {
            char c = s[i];
            int chara = c - ‘A‘ + 1;
            n += chara * pow(26, len - 1 - i);
        }
        return n;
    }
};

LeetCode 171 Excel Sheet Column Number(Excel的列向表数字)

原文:http://blog.csdn.net/nomasp/article/details/50499601

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!