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;
        }
  • 相关阅读:
    正则表达式在行首添加指定内容
    linux之find命令详解
    一次安装rpcbind失败引发的思考
    配置linux实现路由功能
    chkconfig命令详解
    1225 数数字
    蛇形填数 ------- 模拟水题
    开灯问题---------简单模拟
    单源最短路径
    图的表示方式
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8475998.html
Copyright © 2011-2022 走看看