Leetcode - Excel Sheet Column Title

本文介绍了一种将十进制数转换为26进制数的方法,使用了两种不同的实现方式:一种利用取余操作得到0到25范围内的数,另一种则通过构造字符串并反转来完成转换。这两种方法都适用于将正整数转换成由A到Z表示的26进制形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[分析]
十进制转26进制,需要注意的是26进制是以1为最小数的。
思路1写了好久,放在这儿用于警示自己还需要更多练习。


public class Solution {
// Method 2
// https://leetcode.com/discuss/19047/my-1-lines-code-in-java-c-and-python
// https://leetcode.com/discuss/34526/share-my-java-solusion
// Using the mod operator gives numbers in range [0, 25].
// That's why he used (n-1) so he's converting n from 1 based to 0 based.
public String convertToTitle(int n) {
String res = "";
while (n > 0) {
res = (char)('A' + (n - 1) % 26) + res;
n = (n - 1) / 26;
}
return res;
}

private static char[] map = new char[27];
static {
for (int i = 1;i <= 26; i++) {
map[i] = (char)('A' + i - 1);
}
}
// Method 1
public String convertToTitle1(int n) {
StringBuilder res = new StringBuilder();
while (n > 0) {
int mod = n % 26;
if (mod == 0) {
res.append('Z');
n -= 26;
} else {
res.append(map[mod]);
}
n /= 26;
}
return res.reverse().toString();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值