【LeetCode】168. Excel Sheet Column Title Excel表列名称(Easy)(JAVA)
题目地址: https://leetcode.com/problems/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"
题目大意
给定一个正整数,返回它在 Excel 表中相对应的列名称。
解题方法
- Excel 表格的形式, [A, Z] 26 个, [AA, ZZ] 26 * 26 个 … [A…A, Z…Z] 26 * … * 26 个
- 可以知道,每次减去 26^k (k = 1, 2, 3, 4),就是这个序列里的排序 n
- [A…A, Z…Z] 总共为 count 个数 A, 排在第 n 位:n / 26^(count - 1) 可以计算出第一位,同理可计算出其他位
- note: 因为是从 1 开始的,所以要先减 1
class Solution {
public String convertToTitle(int n) {
StringBuilder res = new StringBuilder();
n--;
int count = 1;
long pro = 26;
while (n >= pro) {
n -= pro;
pro *= 26;
count++;
}
while (count > 0) {
pro = Math.max(pro / 26, 1);
count--;
res.append((char) (n / pro + 'A'));
n = (int) (n % pro);
}
return res.toString();
}
}
执行耗时:0 ms,击败了100.00% 的Java用户
内存消耗:35.4 MB,击败了91.27% 的Java用户