一、leetcode算法
1、Excel 表列序号
1.1、题目
给你一个字符串 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.2、思路
思路一:此题我们首先要找到规律,字母A-Z对应1-26,而且往前进一位就要乘以26,所以我们可以定义两个变量,一个是要返回的总数,一个是每一位要乘以的系数。
1.3、答案
class Solution { public int titleToNumber(String columnTitle) { //定义一个要返回的总数 int number = 0; //定义一个相乘系数,最右边的乘以1,往前进一位再乘以26 int multiple = 1; for(int i = columnTitle.length() -1; i >= 0; i--){ int k = columnTitle.charAt(i) - 'A' + 1; number += k * multiple; multiple *= 26; } return number; } }
复杂度分析
时间复杂度:O(n),其中 nn 是列名称 columnTitle 的长度。需要遍历列名称一次。
空间复杂度:O(1)。