一、Excel中根据列名求列索引

1. 描述

Excel中列名与列数的对应关系是这样的:

  1. A --> 1
  2. B --> 2
  3. Z --> 26
  4. AA --> 27

列名是26个大写字母范围,如何根据给出的列名字求出索引?

2. 思路

  • 字母所在位,代表了26的权。
  • 逢26进一,即是一种26进制的表达;
  • 将26进制转换为十进制。

3. 实现

  1. public class Solution {
  2. /**
  3. * 英文转26进制(Excel的第几列)
  4. *
  5. * @param str 英文字符串
  6. */
  7. public int title2Number(String str) {
  8. int ans = 0;
  9. for (int i = 0; i < str.length(); i++) {
  10. char c = str.charAt(i);
  11. ans = ans * 26 + (c - 'A' + 1);
  12. }
  13. return ans;
  14. }
  15. }

二、完成快速判断一个数是否是2的n次方

1. 思路

转换为二进制呗,计算机本身就是二进制存储的。

2. 实现