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

LeetCode Excel Sheet Column Title:26 進制轉換巧解

     編輯:關於C++

問題描述

給定正整數 n,返回 Excel 欄標題。規則:1→A, 2→B, ..., 26→Z, 27→AA, 28→AB... 本質是「無 0 的 26 進制」。

核心洞察

普通進制有 0,但這裡 1~26 對應 A~Z。轉換時先 n-- 將 1~26 映射為 0~25,再取模、除以 26。字符構建從低位到高位,故需反轉或前插。

極簡代碼

string convertToTitle(int n) {
    string res;
    while (n--) {
        res = char('A' + n % 26) + res;
        n /= 26;
    }
    return res;
}

執行流程示例 (n=28)

  1. n=28 → n--=27 → 27%26=1 → 'B' → res="B" → n=27/26=1
  2. n=1 → n--=0 → 0%26=0 → 'A' → res="AB" → n=0/26=0 結束

關鍵點總結

  • while (n--) 同時完成「遞減映射」與「循環條件判斷」
  • n % 26 得到當前位 (0~25),n /= 26 進位
  • 字符前插 res = ch + res 避免最後反轉

複雜度

  • 時間:O(log26 n),極快
  • 空間:O(log26 n) 存儲結果字符串

這道題看似簡單,實則考察對「無零進制」的理解。掌握 n-- 技巧後,代碼可壓縮至 4 行以內。

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