字母和数字的转译问题

来源:互联网 发布:图片抽奖软件 编辑:程序博客网 时间:2024/05/21 16:52

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