一、给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入:columnNumber = 1
输出:“A”
示例 2:
输入:columnNumber = 28
输出:“AB”
示例 3:
输入:columnNumber = 701
输出:“ZY”
示例 4:
输入:columnNumber = 2147483647
输出:“FXSHRXW”
思路:转换成26进制,新的对应关系是原先对应关系-1得到,所以在每次操作的时候,都要让columnNumber-1,得到新的对应关系。
public String convertToTitle(int columnNumber) {
if(columnNumber<0){
return "";
}
StringBuilder sb = new StringBuilder();
while(columnNumber>0){
columnNumber--;
sb.append((char)(columnNumber%26+'A'));
columnNumber=columnNumber/26;
}
return sb.reverse().toString();
}
二、给你一个字符串 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
解题思路:
‘A’: 26的0次方✖️1
‘BC’: 26的1次方✖️2 + 26的0次方✖️3
‘BCD’: 26的2次方✖️2 + 26的1次方✖️3 + 26的0次方✖️4
‘KDEF’: 26的3次方✖️11 + 26的2次方✖️4 + 26的1次方✖️5 + 26的0次方✖️6
public int titleToNumber(String columnTitle) {
int n =columnTitle.length();
if(n==0){
return 0;
}
int sum =0;
for(int i=n-1;i>=0;i--){
sum += ((int)(columnTitle.charAt(i)-'A') +1) * Math.pow(26,(n-1-i));
}
return sum;
}