zoukankan      html  css  js  c++  java
  • LeetCode171——Excel Sheet Column Number

      很简单的一道题,输出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;
    }

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

  • 相关阅读:
    Java调用wcf
    登录重构小记
    从零打造一个Web地图引擎
    Vue动态组件的实践与原理探究
    揭开Vue异步组件的神秘面纱
    使用vue实现排序算法演示动画
    C#转义字符
    asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)
    页面关闭事件onbeforeunload 记录
    执行一段sql
  • 原文地址:https://www.cnblogs.com/thewaytomakemiracle/p/5039548.html
Copyright © 2011-2022 走看看