原题链接:
https://leetcode.cn/problems/excel-sheet-column-number/
解题思路:
- 先回忆一下10进制数的计算方式,假设
321,计算式为:result = 3 * 10^2 + 2 * 10^1 + 1 * 10^0。 - 那么对于该题,即为计算26进制数,将上面算式中的10替换为26即可。
functiontitleToNumber(columnTitle: string): number{letresult: number=0// 缓存结果letbaseCode: number='A'.charCodeAt(0)// 缓存A的Code,用于计算26个英文字母的Code// 生成一个哈希表,缓存26个字母对应的数字letmap: Map<string,number>=newMap(Array.from({length: 26},(item,index)=>[String.fromCharCode(baseCode+index),index+1,]),)// i代表当前位的值,j代表26的j次幂// i和j相当于两个指针,分别从两端向中间推进// 按照计算式,不断累加result即可for(leti=0,j=columnTitle.length-1;i<columnTitle.length;i++,j--){result+=map.get(columnTitle[i])*Math.pow(26,j)}returnresult};
原题链接:
https://leetcode.cn/problems/excel-sheet-column-number/
解题思路:
321,计算式为:result = 3 * 10^2 + 2 * 10^1 + 1 * 10^0。