标签:
这道题可以看作是26进制问题。26进制就是最多可以用26个不同的符号组合在一起来表示一个数值。
因此,ABC代表的数值就是:A*262+B*261+C*260=1*262+2*261+3*260,其他字母组合以此类推。
下面这种方法是一种很直观的思路,但是要调用C++库函数pow(x,a),计算时间会变长。
pow(x,a)可以求得x的a次幂,‘A‘的ASCII码是64。
class Solution { public: int titleToNumber(string s) { int n=s.size()-1; int result=0; for(int i=0;i<=n;i++) { result+=(s[i]-64)*pow(26,n-i); } return result; } };
更好的写法是:
class Solution { public: int titleToNumber(string s) { int result=0; for(int i=0;i<s.size();i++) result=result*26+s[i]-‘A‘+1; return result; } };
标签:
原文地址:http://www.cnblogs.com/summerkiki/p/5495612.html