码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode171——Excel Sheet Column Number

时间:2015-12-11 18:18:07      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:

  很简单的一道题,输出excel中字母对应的数字。但是由于自己的程序思想还是很差,代码很长。

class Solution
{
public:
    int titleToNumber(string s)
    {
        int ans = 0;
        int tmp = 1;
        auto len = s.size();
        
        if (len == 1)
        {
            return letterToNumber(s[0]);
        }
        
        for (auto i = 0; i != len; ++ i)
        {
            ans += letterToNumber(s[i]) * pow(26,(len - tmp));
            tmp ++;
        }
        ans += letterToNumber(s[len - tmp]);
        return ans;
    }
    int letterToNumber(char p)
    {
        int ans = 0;
        switch(p)
        {
            case A:
                ans = 1;
                break;
            case B:
                ans = 2;
                break;
            case C:
                ans = 3;
                break;
            case D:
                ans = 4;
                break;
            case E:
                ans = 5;
                break;
            case F:
                ans = 6;
                break;
            case G:
                ans = 7;
                break;
            case H:
                ans = 8;
                break;
            case I:
                ans = 9;
                break;
            case J:
                ans = 10;
                break;
            case K:
                ans = 11;
                break;
            case L:
                ans = 12;
                break;
            case M:
                ans = 13;
                break;
            case N:
                ans = 14;
                break;
            case O:
                ans = 15;
                break;
            case P:
                ans = 16;
                break;
            case Q:
                ans = 17;
                break;
            case R:
                ans = 18;
                break;
            case S:
                ans = 19;
                break;
            case T:
                ans = 20;
                break;
            case U:
                ans = 21;
                break;
            case V:
                ans = 22;
                break;
            case W:
                ans = 23;
                break;
            case X:
                ans = 24;
                break;
            case Y:
                ans = 25;
                break;
            case Z:
                ans = 26;
                break;
            default:
                break;
        }
        return ans;
    }
};

看了别人的代码之后,深深感觉自己的弱小。他们利用了ascii码极大的减少了switch case 的繁琐。

int titleToNumber(string s) {

    int len = s.length(), sum=0;

    for(int i=0;i<len;i++)
        sum += (int(s[i]-A+1))*pow(26,len-1-i);

    return sum;
}

短短几行代码就将这个问题解决了,看来学习之路还很漫长!加油!!!!!!!

LeetCode171——Excel Sheet Column Number

标签:

原文地址:http://www.cnblogs.com/thewaytomakemiracle/p/5039548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!