zoukankan      html  css  js  c++  java
  • [leetcode]168. Excel Sheet Column Title表格列名编码(十进制和多进制相互转换)

    其实就是一道,十进制转多进制的题

    十进制转多进制就是从后边一位一位地取数。

    这种题的做法是,每次用n%进制,相当于留下了最后一位,然后把这位添加到结果最前边。结果需要转为进制的符号。

    下一次循环的n变为n/进制,相当于把前边的n-1取出来。

    十进制的时候一位一位地取数,也是%10,然后更新n=n/10,一样的道理,只是换了进制。

    这个题注意没有0,26进制是1-26,而不是0-25.所以每次循环n要-1.

    public String convertToTitle(int n) {
            StringBuilder res = new StringBuilder();
            while (n>0){
                n--;
                StringBuilder cur = new StringBuilder();
                cur.append((char)(n%26+'A'));
                res = cur.append(res);
                n /= 26;
            }
            return res.toString();
        }

     多进制转十进制就更简单了,一位一位地乘上权值然后相加就行,同样这个题每次要+1

    public static int titleToNumber(String s) {
            int l = s.length();
            int res = 0;
            while (l>0)
            {
                res+=(int)Math.pow(26,l-1)*(s.charAt(0)-'A'+1);
                s = s.substring(1);
                l--;
            }
            return res;
        }
  • 相关阅读:
    nginx防止盗链
    Nginx防盗链详细设置
    [bzoj2127]happiness
    [bzoj2400]Optimal Marks
    [bzoj1738]发抖的牛
    [bzoj1741]穿越小行星群
    [bzoj3123]森林
    [bzoj2588]Count on a tree
    [bzoj3144]切糕
    [bzoj1787]紧急集合
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8475998.html
Copyright © 2011-2022 走看看