十进制转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(); } }