LeetCode题解:excel-sheet-column-number

题目链接:

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。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值