leetcode171&168 Excel表列转换总结

171. Excel表列序号

题目: 给定一个Excel表格中的列名称,返回其相应的列序号。

例如,

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28 
...

输入: “A”
输出: 1
示例 2:
输入: “AB”
输出: 28
示例 3:
输入: “ZY”
输出: 701

本题和168是逆过程

因为从1开始 没有0 : 满27进1 但是基数是26

	public int titleToNumber(String s) {
     
        int sum = 0;
        for (char ch : s.toCharArray()) {
     
            sum = sum * 26 + ((ch - 'A') + 1);
        }
        return sum;
    }

168. Excel表列名称
题目:给定一个正整数,返回它在 Excel 表中相对应的列名称。
例如,

1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB 
...

输入: 1 输出: "A”
输入: 28 输出: “AB”

本题和171 是逆过程

26进制;但是关键点在于没有0; 所以要先减1;

	public String convertToTitle(int n) {
     
       StringBuilder sb = new StringBuilder();
       while (n != 0) {
     
           n--; // 先减1,因为字母从1开始对应,没有对应0的字母
           char ch = (char)(n % 26 + 'A');
           sb.append(ch);
           n /= 26;
       }
       return sb.reverse().toString();
    }

你可能感兴趣的:(leetcode,leetcode,数学)