题目地址
https://leetcode.com/problems/excel-sheet-column-title/description/
题目描述
168. Excel Sheet Column Title
Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
Example 1:
Input: 1
Output: "A"
Example 2:
Input: 28
Output: "AB"
Example 3:
Input: 701
Output: "ZY"
思路
- 本质是10进制到26进制的转换.
- 这是一道从1开始的的26进制转换题。
- 对于一般性的进制转换题目,只需要不断地对 columnNumbercolumnNumber 进行 % 运算取得最后一位,然后对 columnNumbercolumnNumber 进行 / 运算,将已经取得的位数去掉,直到 columnNumbercolumnNumber 为 0 即可。
- 一般性的进制转换题目无须进行额外操作,是因为我们是在「每一位数值范围在 [0,x)[0,x)」的前提下进行「逢 xx 进一」。
- 但本题需要我们将从 1 开始,因此在执行「进制转换」操作前,我们需要先对 columnNumbercolumnNumber 执行减一操作,从而实现整体偏移。
关键点
- 进制转换就是不断取余.
- 注意, 此题是倒序. 最后将余数倒序输出.
- 由于这题从1开始, 所以除的时候, n--.
代码
- 语言支持:Java
class Solution {
public String convertToTitle(int columnNumber) {
StringBuffer sb = new StringBuffer();
while (columnNumber != 0) {
columnNumber--;
char c = (char)(columnNumber % 26 + 'A');
sb.append(c);
columnNumber /= 26;
}
return sb.reverse().toString();
}
}
网友评论