2020.12.21 LeetCode 从零单刷个人笔记整理(持续更新)
github:https://github.com/ChopinXBP/LeetCode-Babel
这题实质上是移位进制转换问题。
xi*26^(i-1) + … + x3*26^2 + x2*26^1 + x1*26^0 = n
每次num=n%26可以取出最低位的xi=num,n/=26可以去掉最低位的xi.
但题目每个位的范围是1-26,而不是0-25。因此当num==26时需要进行修正,将n-1是使n不满足26的倍数,再除26即可消去最底的xi
Given a positive integer, return its corresponding column title as appear in an Excel sheet.
给定一个正整数,返回它在 Excel 表中相对应的列名称。
例如,
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
示例 1:
输入: 1
输出: "A"
示例 2:
输入: 28
输出: "AB"
示例 3:
输入: 701
输出: "ZY"
package Problems;
/**
*
* Given a positive integer, return its corresponding column title as appear in an Excel sheet.
* 给定一个正整数,返回它在 Excel 表中相对应的列名称。
*
*/
public class ExcelSheetColumnTitle {
//移位进制转换
//xi*26^(i-1) + … + x3*26^2 + x2*26^1 + x1*26^0 = n
//每次num=n%26可以取出最低位的xi=num,n/=26可以去掉最低位的xi
//但题目每个位的范围是1-26,而不是0-25。因此当num==26时需要进行修正,将n-1是使n不满足26的倍数,再除26即可消去最底的xi
public String convertToTitle(int n) {
StringBuilder result = new StringBuilder();
while(n > 0){
int num = n % 26;
if(num == 0){
num = 26;
n--;
}
result.insert(0, (char)('A' + num - 1));
n /= 26;
}
return result.toString();
}
}
#Coding一小时,Copying一秒钟。留个言点个赞呗,谢谢你#