博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]--168. Excel Sheet Column Title
阅读量:6244 次
发布时间:2019-06-22

本文共 3603 字,大约阅读时间需要 12 分钟。

Given a positive integer, return its corresponding column title as appear in an Excel sheet.

For example:

1 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> AB

Credits:

Special thanks to @ifanchu for adding this problem and creating all test cases.

本质上就是将一个10进制数转换为一个26进制的数

注意:由于下标从1开始而不是从0开始,因此要减一操作。

The Best Answer:

/**     * 最好的方式     */    public String convertToTitle2(int n) {        String ret = "";        while (n != 0) {            ret = (char) ((n - 1) % 26 + 'A') + ret;            n = (n - 1) / 26;        }        return ret;    }

再提供一种递归一种非递归的方式,都是Accept!

递归形式:

/**     * 递归形式     *      * @param n     * @return     */    public String convertToTitle(int n) {        if (n == 0)            return "";        if (n <= 26)            return intToStr(n);        String str = "";        int temp = n % 26;        int i = n / 26;        if (temp == 0)            i--;        str += convertToTitle(i);        str += intToStr(temp);        return str;    }    public String intToStr2(int x) {        switch (x) {        case 0:            return "A";        case 1:            return "B";        case 2:            return "C";        case 3:            return "D";        case 4:            return "E";        case 5:            return "F";        case 6:            return "G";        case 7:            return "H";        case 8:            return "I";        case 9:            return "J";        case 10:            return "K";        case 11:            return "L";        case 12:            return "M";        case 13:            return "N";        case 14:            return "O";        case 15:            return "P";        case 16:            return "Q";        case 17:            return "R";        case 18:            return "S";        case 19:            return "T";        case 20:            return "U";        case 21:            return "V";        case 22:            return "W";        case 23:            return "X";        case 24:            return "Y";        case 25:            return "Z";        }        return "";    }

非递归形式:

/**     * 非递归形式     *      * @param n     * @return     */    public String convertToTitle1(int n) {        if (n == 0)            return "";        if (n <= 26)            return intToStr(n);        String str = "";        int temp = 0;        while (n != 0) {            temp = (n - 1) % 26;            str = intToStr2(temp) + str;            n = (n - 1) / 26;        }        return str;    }public String intToStr2(int x) {        switch (x) {        case 0:            return "A";        case 1:            return "B";        case 2:            return "C";        case 3:            return "D";        case 4:            return "E";        case 5:            return "F";        case 6:            return "G";        case 7:            return "H";        case 8:            return "I";        case 9:            return "J";        case 10:            return "K";        case 11:            return "L";        case 12:            return "M";        case 13:            return "N";        case 14:            return "O";        case 15:            return "P";        case 16:            return "Q";        case 17:            return "R";        case 18:            return "S";        case 19:            return "T";        case 20:            return "U";        case 21:            return "V";        case 22:            return "W";        case 23:            return "X";        case 24:            return "Y";        case 25:            return "Z";        }        return "";    }

自然没有第一种解决巧妙,直接用余数+’A’,这样就可以直接得出需要的结果字符,而不需要用数组或者这种长长的switch语句。

转载地址:http://asvia.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
话里话外:企业管理的五个层次
查看>>
Hazelcast集群服务(3)
查看>>
研究人员创建可***BIOS和网卡的恶意软件
查看>>
C++ numeric_limits的用法
查看>>
升级maildrop,解决自动回复乱码问题
查看>>
MySQL Sandbox---快速体验各版本MySQL
查看>>
我的友情链接
查看>>
CentOS安装KDE和Gnome
查看>>
非常有趣的js
查看>>
Spring 单元测试
查看>>
品读Mybatis源码---(1)解析配置文件
查看>>
android获取设备分辨率的新方法
查看>>
函数式对象之自指向
查看>>
内建控制结构之变量范围
查看>>
我的友情链接
查看>>
解决Zabbix Grafana 2.5.0.1 不支持7day趋势数据显示
查看>>
JDBC为什么要使用PreparedStatement而不是Statement
查看>>
Cloud9 on Docker镜像发送
查看>>
图片交易平台Scoopshot获120万美元投资
查看>>