class Solution { public: /* Z -> 26 Y -> 25 举个,假设存在某个十进制数字,编码为 ABCDABCD(字母与数字的映射关系与本题相同),转换过程如下: ans = 0 ans = ans * 10 + 1ans=ans∗10+1 => A ans = ans * 10 + 2ans=ans∗10+2 => B ans = ans * 10 + 3ans=ans∗10+3 => C ans = ans * 10 + 4ans=ans∗10+4 => D A 1234 A 0*10+1 =1 B 1*10+2 =12 C 12*10+3 =123 D 123*10+4 = 1234 同理,本题只是将 1010 进制换成 2626 进制 */ int titleToNumber(string columnTitle) { int ans = 0, l = columnTitle.length(); for(int i = 0; i < l; i++){ ans = 26 * ans + (columnTitle[i] - 'A' + 1); } return ans; } }; |