一、Excel中根据列名求列索引
1. 描述
Excel中列名与列数的对应关系是这样的:
A --> 1
B --> 2
…
Z --> 26
AA --> 27
列名是26个大写字母范围,如何根据给出的列名字求出索引?
2. 思路
- 字母所在位,代表了26的权。
- 逢26进一,即是一种26进制的表达;
- 将26进制转换为十进制。
3. 实现
public class Solution {
/**
* 英文转26进制(Excel的第几列)
*
* @param str 英文字符串
*/
public int title2Number(String str) {
int ans = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
ans = ans * 26 + (c - 'A' + 1);
}
return ans;
}
}
二、完成快速判断一个数是否是2的n次方
1. 思路
转换为二进制呗,计算机本身就是二进制存储的。