Leetcode - Excel Sheet Column Title

[分析]
十进制转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、付费专栏及课程。

余额充值