[LeetCode] #171 Excel 表列序号
给你一个字符串 columnTitle
,表示 Excel 表格中的列名称。返回该列名称对应的列序号。
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
与[LeetCode] #168 Excel表列名称相反,将字符串转为数字
有两种思路,一表示结果,二表示过程
思路一(结果):
以ABC为例,代表 1*26*26+2*26+3
那我们从低位开始,算出每位的值3、2*26、1*26*26,相加
class Solution { public int titleToNumber(String columnTitle) { char[] chars = columnTitle.toCharArray(); int n = chars.length; int res = 0; for (int i = 0; i < n; i++) { res += (chars[n - i - 1] - 'A' + 1) * Math.pow(26, i); } return res; } }
思路二(过程):
以ABC为例,从高位开始看
看第一位A,此时为A,代表1,整体为1
看下一位B,此时为AB,A相比上一次变高了一位,代表26*1,增加B代表2,整体为26*1+2
看下一位C,此时为ABC,AB相比上一次都变高了一位,代表(26*1+2)*26,增加C代表3,整体为(26*1+2)*26+3
class Solution { public int titleToNumber(String columnTitle) { char[] chars = columnTitle.toCharArray(); int n = chars.length; int res = 0; for (int i = 0; i < n; i++) { res = res * 26 + (chars[i] - 'A' + 1); } return res; } }
知识点:pow() 方法用于返回第一个参数的第二个参数次方。
总结:无