字母和数字的转译问题

171. Excel Sheet Column Number

Given a column title as appear in an Excel sheet, return its corresponding column number.
For example:
A -> 1
B -> 2
C -> 3

Z -> 26
AA -> 27
AB -> 28
由字符串翻译为对应的数字,很容易得到以下代码:

 public int titleToNumber(String s) {
        int len=s.length();
        if(len==0) return 0;
        int sum=0;
        for(int i=len-1;i>=0;i--){
            sum+=(s.charAt(i)-'A'+1)*Math.pow(26,len-1-i);
        }
        return sum;
}

168. Excel Sheet Column Title

Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1 -> A
2 -> B
3 -> C

26 -> Z
27 -> AA
28 -> AB
由数字翻译成字母,由于是从1开始,而后面有类似10,20,30,(十进制)等,所以需要对能否整除26进行判断:
注:

  • 常见ASCII码:48~57为0到9十个阿拉伯数字,65~90为26个大写英文字母,97~122号为26个小写英文字母
  • int转ASCII码:(char)65 –>’A’
  • ASCII码转int: ‘B’-‘A’+65–>66
    public String convertToTitle(int n) {
            int temp=0;
            StringBuffer s=new StringBuffer();
            while(n>0){
                if(n%26==0) {/*注意这种情况*/
                    s.append('Z');
                    n=n/27;
                }
                else{
                    s.append((char)('A'+n%26-1));
                    n=n/26;
                }
            }
            return s.reverse().toString();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值