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
|
自己的思路
十进制转“二十六进制”
public String convertToTitle(int n) { String str = ""; do { int chrInt = n % 26; char chr; if (chrInt == 0) { chr = 'Z'; n -= 26; } else { chr = (char) (chrInt - 1 + 'A'); } str = chr + str; n = n / 26; } while (n != 0); return str; }
|
别人的思路
public String convertToTitle(int n) { if(n <= 0){ throw new IllegalArgumentException("Input is not valid!"); }
StringBuilder sb = new StringBuilder();
while(n > 0){ n--; char ch = (char) (n % 26 + 'A'); n /= 26; sb.append(ch); }
sb.reverse(); return sb.toString(); }
|
思路是一样的,但是代码更简洁,使用了StringBuilder
和 reverse()
,提前减 1 也避免了特殊处理’Z’
在算法问题中常常用到:
1
的 ascii 为 33,十六进制为 21HA
的 ascii 为 65,十六进制为 41Ha
的 ascii 为 97,十六进制为 61H