同 5406,正整數轉 Excel 列標題(26 進制無零位)。
觀察:若將 n 先減 1,則 0→A, 1→B, ..., 25→Z,恰好是標準 26 進制。遞歸/迭代:
public String convertToTitle(int n) {
StringBuilder sb = new StringBuilder();
while (n > 0) {
n--; // 關鍵:預減 1
sb.append((char)('A' + n % 26));
n /= 26;
}
return sb.reverse().toString();
}
原理:n-1 使映射從 1-based 變為 0-based,消除借位邏輯。代碼更簡潔,不易出錯。
| 方法 | 關鍵步驟 | 優點 |
|---|---|---|
| 借位法 | rem==0 時借位 | 直觀對應題目定義 |
| 預減 1 法 | 循環首行 n-- | 代碼極簡,無分支 |
推薦預減 1 法,面試中易寫對。