一、需求
给你一个字符串 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
示例4:
输入: columnTitle = “ABC”
输出: 731
提示:
1 <= columnTitle.length <= 7
columnTitle
仅由大写英文组成columnTitle
在范围["A", "FXSHRXW"]
内
二、思路分析图
(一)循环方案【O(n)方案】
三、代码
(一)数据初始化
/*** 入口* 171、Excel 表列序号* 输入:* columnTitle = "ABC"* 输出:* result1 = 731* 解释:* 1.递归方案* 2.O(n)方案*/
@Test
public void suanfa39()
{// 初始化String columnTitle = "ABC";// 打印// 循环方案【O(n)方案】int result1 = this.forTitleToNumber(columnTitle);System.out.println("result1 = " + result1);
}
(二) 循环方案【O(n)方案】
/*** 循环方案【O(n)方案】** @param columnTitle* @return*/
public int forTitleToNumber(String columnTitle)
{int sum = 0;for (int i = 0; i < columnTitle.length(); i++){sum += Math.pow(26, i) * (columnTitle.charAt(columnTitle.length() - 1 - i) - 64);}return sum;
}
(三)结果图
作者:王子威
四、总结
- 学习了Excel 表列序号算法
- 这个应该是168的另一种版本,思路相反,因为有了经验,这个就参考了168的思路逆向写的
- 算法兴趣+1 总:39
- 加强了对算法的分析能力