`

Leetcode - Excel Sheet Column Title

    博客分类:
  • Math
 
阅读更多
[分析]
十进制转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();
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics