就是26进制数转化成10进制
醉了,熬夜无法思考:
想用map帮忙,,,没会写,,,,
class Solution {
public:
int titleToNumber(string s) {
int len=s.length()-1,sum=0;
map <char,int> covert_map;
for(int i=0;i<26;i++)
{
// printf("%c ",(char)('A'+i));
// printf("%d \n",i+1);
covert_map.insert(pair((char)('A'+i),i+1));
}
// for(auto& x: covert_map)
// cout << x.first << ": " << x.second << endl;
int data=0,tmp=0;
printf("===========================\n");
for(int i=0,j=0;i<s.length();i++,j++)
{
printf("%c:",s[len]);
data=(s[len]-'A')+1;
printf("%d\n",data);
tmp=data * pow(26,j);
printf("\n tmp:%d\n",tmp);
// printf("%c, %d ",s[len--],s[len--]-'A');
sum+= data * pow(26,j);
// sum+= (covert_map.find(s[len])).second*(26^j);
len--;
}
return sum;
}
};
主要遇到的问题:
26的j次方居然写成:26^j
class Solution {
public:
int titleToNumber(string s) {
int len=s.length()-1,sum=0;
map <char,int> covert_map;
for(int i=0;i<26;i++)
{
// printf("%c ",(char)('A'+i));
// printf("%d \n",i+1);
covert_map.insert(pair((char)('A'+i),i+1));
}
// for(auto& x: covert_map)
// cout << x.first << ": " << x.second << endl;
int data=0,tmp=0;
printf("===========================\n");
for(int i=0,j=0;i<s.length();i++,j++)
{
printf("%c:",s[len]);
data=(s[len]-'A')+1;
printf("%d\n",data);
tmp=data * pow(26,j);
printf("\n tmp:%d\n",tmp);
// printf("%c, %d ",s[len--],s[len--]-'A');
// sum+= data * (26^j);//坑,,,
sum+= data * pow(26,j);
// sum+= (covert_map.find(s[len])).second*(26^j);
len--;
}
return sum;
}
};
删垃圾:
class Solution {
public:
int titleToNumber(string s) {
int len=s.length()-1,sum=0,data=0,tmp=0;
for(int i=0,j=0;i<s.length();i++,j++)
{
printf("%c:",s[len]);
data=(s[len]-'A')+1;
printf("%d\n",data);
// tmp=data * pow(26,j);
// printf("\n tmp:%d\n",tmp);
sum+= data * pow(26,j);
len--;
}
return sum;
}
};
,,,
class Solution {
public:
int titleToNumber(string s) {
int len=s.length()-1,sum=0,data=0,tmp=0;
for(int i=0,j=0;i<s.length();i++,j++)
{
data=(s[len--]-'A')+1;
sum+= data * pow(26,j);
}
return sum;
}
};
删:
class Solution {
public:
int titleToNumber(string s) {
int len=s.length()-1,sum=0,j=0;
for(int i=0;i<s.length();i++)
{
sum+= (s[len--]-'A'+1) * pow(26,j++);
}
return sum;
}
};
看人家大神又是怎么做的: