首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

LeetCode Excel 表列標題 - 數字轉 26 進制字母

     編輯:關於C++

問題描述

給定正整數 n,返回 Excel 表中對應的列標題。例如:1→A, 26→Z, 27→AA, 28→AB。這本質是 26 進制轉換,但無「0」位,即 1-26 對應 A-Z。

解法分析

類似進制轉換,但每次取餘數時:

  • 若 n % 26 == 0,說明當前位為 'Z',且需向高位借 1(即 n = n/26 - 1)。
  • 否則當前位為 'A' + (n%26 - 1),n = n/26。

最後反轉字符串得到結果。

代碼實現(Java)

public class Solution {
    public String convertToTitle(int n) {
        StringBuilder sb = new StringBuilder();
        while (n > 0) {
            int rem = n % 26;
            if (rem == 0) {
                sb.append('Z');
                n = n / 26 - 1;
            } else {
                sb.append((char)('A' + rem - 1));
                n /= 26;
            }
        }
        return sb.reverse().toString();
    }
}

測試用例

輸入輸出
1A
26Z
27AA
52AZ
701ZY

總結

關鍵在於處理「無零位」的 26 進制,借位邏輯是核心。時間複雜度 O(log26 n),空間 O(log26 n)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved