[分析]
十进制转26进制,需要注意的是26进制是以1为最小数的。
思路1写了好久,放在这儿用于警示自己还需要更多练习。
十进制转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();
}
}