字母和數字的轉譯問題

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();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章