您的位置:首页 > 其它

LeetCode题解:excel-sheet-column-number

2015-03-26 20:38 453 查看
题目链接:

excel-sheet-column-number

题目描述:

Give 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,B代表2 ; AA代表27,AB代表28,以此类推。

解题方案:

由题干的描述我们可以知道,这道题类似于进制的进位

十进制数到9时再加1就成为10,进一位。而这个字母则

是到Z的时候要进位,比如Z代表26,27是26的下一个数

Z + 1 个位就成为A了,然后再进位1,成为AA,于是

AA就代表27.

源码:

int titleToNumber(char *s)
{
//char *s = "AB";
//printf("%s\n",s);

int result = 0;

int count = 0;//记录字符串的总长度
int power = 26;//进制

while(s[count] != '\0')
{
count++;
}
for(int i = count - 1; i >= 0; --i)//将每一个字符转化为相应的数字相加
{
if(i == count - 1) //最后一位数乘的是26的0次幂
{
result += s[i] - 'A' + 1;
}
else
{
result += (s[i] - 'A' + 1) * power;
power *= 26;
}
}
//printf("%d\n", count);

return result;
}
PS:LeetCode中提交的函数名要严格按照题目给定的

函数名书写,比如这个题目中的函数名为titleToNumber(char *s)

如果你自己改为titletoNumber(char *s)就不行,会CE的。

我就是因为这个原因才出现三次CE。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c leetcode