leetcode-171 Excel Sheet Column Number

来源:互联网 发布:淘宝怎么用照片搜同款 编辑:程序博客网 时间:2024/05/16 08:37

这题本质是个进制转换的问题(26进制转换为10进制):

int titleToNumber(char *s) {    int sum = 0;    int i = 0;    int tmp = 'A' - 1;    for(; i < strlen(s); i++){        sum = sum *26 + (s[i] - tmp);    }    return sum;}

进制转换都是从字符串的最高位开始扫描,而不是从最低位

没有检测s是否为空字符串或者null,不过在leetcode里面好像从来不需要检测参数是否合法


从discuss中发现了一种C++递归的方法:

class Solution {public:    int titleToNumber(string s) {           return s != "" ? 26*titleToNumber(s.substr(0,s.size() -1)) + s[s.size()-1] - 'A' + 1 : 0;    }};
由于C语言中没有substr函数,所以不能写成上面C++这种形式

0 0
原创粉丝点击