给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回该列名称对应的列序号 。
例如:
A -> 1
B -> 2
C -> 3
…
Z -> 26
AA -> 27
AB -> 28
…
示例 1:
输入: columnTitle = “A”
输出: 1
示例 2:
输入: columnTitle = “AB”
输出: 28
示例 3:
输入: columnTitle = “ZY”
输出: 701
提示:
1 <= columnTitle.length <= 7
columnTitle 仅由大写英文组成
columnTitle 在范围 [“A”, “FXSHRXW”] 内
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/excel-sheet-column-number
(1)进制转换
仔细分析可知,本题实质上是一个进制转换问题,即将 26 进制的数转换为 10 进制的数。这里 A ~ Z 分别代表 1 ~ 26,我们假设该 26 进制数的最右边位为低位,即第 1 位,那么该位的位权为 260 = 1,第 2 位的位权为 261 = 26,以此类推。然后从 columnTitle 的最右边位开始遍历,用当前字母代表的数乘以该位置对应的位权,然后全部相加即可。
//思路1————进制转换
class Solution {
public static int titleToNumber(String columnTitle) {
int res = 0;
//初始化位权
int pos = 1;
for (int i = columnTitle.length() - 1; i >= 0; i--) {
int k = columnTitle.charAt(i) - 'A' + 1;
res += k * pos;
pos *= 26;
}
return res;
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_43004044/article/details/125341724
内容来源于网络,如有侵权,请联系作者删除!