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

LeetCode Excel Sheet Column Number:26 进制字符串转整数

     編輯:關於C++

题目大意

Excel 列标题转数字:A=1, B=2, ..., Z=26, AA=27, AB=28, ...

本质:26 进制转 10 进制

字符 'A'~'Z' 对应数字 1~26。从左到右累加:ans = ans * 26 + (c - 'A' + 1)。

C++ 实现

class Solution {
public:
    int titleToNumber(string s) {
        int ans = 0;
        for (char c : s)
            ans = ans * 26 + (c - 'A' + 1);
        return ans;
    }
};

Python 实现

class Solution:
    def titleToNumber(self, s: str) -> int:
        ans = 0
        for c in s:
            ans = ans * 26 + ord(c) - ord('A') + 1
        return ans

复杂度

  • 时间:O(len(s))
  • 空间:O(1)

逆向题:数字转列标题 (LeetCode 168)

string convertToTitle(int n) {
    string s;
    while (n) {
        --n; // 关键:1-based 调整
        s.push_back('A' + n % 26);
        n /= 26;
    }
    reverse(s.begin(), s.end());
    return s;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved