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
思路一:
本质是进制转换,是将n转化为26进制,但是需要注意的是这个26进制是从1开始的。
1 public String convertToTitle(int n) { 2 StringBuilder sb = new StringBuilder(); 3 while(n > 0) { 4 int remainder = n % 26; 5 n /= 26; 6 if(remainder == 0) { 7 //当余数是0时,插入Z后n要减1 8 sb.insert(0, 'Z'); 9 n--; 10 } else { 11 sb.insert(0, (char)('A' + remainder - 1)); 12 } 13 } 14 return sb.toString(); 15 }
思路二:
一种简洁的递归实现,每次递归n先减1,可以理解为把1~26变为了0~25。
1 public String convertToTitleII(int n) { 2 n--; 3 if(n<26) { 4 return String.valueOf((char)(n + 'A')); 5 } 6 return convertToTitle(n / 26) + String.valueOf((char)(n % 26 + 'A')); 7 }