LeetCode第171題_Excel表列序號

LeetCode 第171題:Excel表列序號

題目描述

給你一個字符串 columnTitle,表示 Excel 表格中的列名稱。返回 該列名稱對應的列序號

例如:

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28 
...

難度

簡單

題目鏈接

點擊在LeetCode中查看題目

示例

示例 1:

輸入: columnTitle = "A"
輸出: 1

示例 2:

輸入: columnTitle = "AB"
輸出: 28

示例 3:

輸入: columnTitle = "ZY"
輸出: 701

示例 4:

輸入: columnTitle = "FXSHRXW"
輸出: 2147483647

提示

  • 1 <= columnTitle.length <= 7
  • columnTitle 僅由大寫英文組成
  • columnTitle 在范圍 ["A", "FXSHRXW"]

解題思路

方法:26進制轉換

本題是第168題的逆問題,是將26進制數轉換為10進制數。需要注意的是,Excel列名是從1開始的,而不是0(A對應1,而不是0)。
關鍵點:

  1. 將問題視為26進制轉10進制的轉換
  2. 遍歷字符串,對每個字符計算其對應的數值并累加到結果中
  3. 注意Excel列名是從1開始的,計算時需要將字符映射為1-26,而不是0-25

時間復雜度:O(n),其中n是字符串的長度。
空間復雜度:O(1),只需要常數額外空間。

代碼實現

C# 實現

public class Solution {public int TitleToNumber(string columnTitle) {int result = 0;foreach (char c in columnTitle) {// 將字符轉換為對應的數值(A=1, B=2, ..., Z=26)int value = c - 'A' + 1;// 累加到結果中,相當于進位操作result = result * 26 + value;}return result;}
}

Python 實現

class Solution:def titleToNumber(self, columnTitle: str) -> int:result = 0for c in columnTitle:# 將字符轉換為對應的數值(A=1, B=2, ..., Z=26)value = ord(c) - ord('A') + 1# 累加到結果中,相當于進位操作result = result * 26 + valuereturn result

C++ 實現

class Solution {
public:int titleToNumber(string columnTitle) {int result = 0;for (char c : columnTitle) {// 將字符轉換為對應的數值(A=1, B=2, ..., Z=26)int value = c - 'A' + 1;// 累加到結果中,相當于進位操作result = result * 26 + value;}return result;}
};

性能分析

各語言實現的性能對比:

實現語言執行用時內存消耗特點
C#80 ms36.3 MB實現簡潔,性能適中
Python32 ms16.2 MB代碼最簡潔
C++0 ms6.0 MB性能最優

補充說明

代碼亮點

  1. 使用進制轉換思想解決問題
  2. 巧妙處理1-based的問題,將字符映射到1-26
  3. 代碼簡潔,易于理解

常見錯誤

  1. 將字符映射到0-25而不是1-26,導致計算錯誤
  2. 沒有正確處理進位操作,導致計算錯誤
  3. 沒有考慮大數情況,可能導致溢出

相關題目

  • 168. Excel表列名稱
  • 12. 整數轉羅馬數字
  • 13. 羅馬數字轉整數

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77302.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77302.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77302.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于YOLO與PySide6的道路缺陷檢測系統(源碼)

道路基礎設施的健康狀況直接影響交通安全與城市運營效率。傳統人工巡檢方式存在效率低、覆蓋范圍有限等問題,而基于深度學習的自動化檢測技術為道路缺陷識別提供了創新解決方案。本文介紹一個結合YOLO目標檢測模型與PySide6圖形界面的道路塌陷檢測系統,實現了高效、可視化的缺…

04_jQuery

文章目錄 一、jQuery介紹1.1、jQuery概述1.2、jQuery特點1.3 為什么要用jQuery 二、引入jQuery2.1、直接引入2.2、CDN引入 三、jQuery語法3.1、基本使用3.2、jQuery事件及常用事件方法3.3、jQuery選擇器&#xff08;重點&#xff09;3.3.1、基本選擇器3.3.2、層次選擇器3.3.3、…

Adruino:傳感器及步進電機

一、傳感器* 1、溫濕度傳感器 DHT11它采用專用的數字采集技術和溫濕度傳感器技術&#xff0c;包括一個電阻式感濕元件和NTC測溫元件&#xff0c;并與一個高性能的8位單片機連接。DATA端采用串行接口&#xff08;單線雙向&#xff09;與微控制器進行同步和通信。 DHT11的供電電…

高中數學聯賽模擬試題精選第18套幾何題

在 △ A B C \triangle ABC △ABC 中, A B < A C AB< AC AB<AC, 點 K K K, L L L, M M M 分別是邊 B C BC BC, C A C A CA, A B AB AB 的中點. △ A B C \triangle ABC △ABC 的內切圓圓心為 I I I, 且與邊 B C BC BC 相切于點 D D D. 直線 l l l 經過線段…

ubantu18.04(Hadoop3.1.3)之Spark安裝和編程實踐

說明&#xff1a;本文圖片較多&#xff0c;耐心等待加載。&#xff08;建議用電腦&#xff09; 注意所有打開的文件都要記得保存。 第一步&#xff1a;準備工作 本文是在之前Hadoop搭建完集群環境后繼續進行的&#xff0c;因此需要讀者完成我之前教程的所有操作。 以下所有操…

DCDC芯片,boost升壓電路設計,MT3608 芯片深度解析:從架構到設計的全維度技術手冊

一、硬件架構解析:電流模式升壓 converter 的核心設計 (一)電路拓撲與核心組件 MT3608 采用恒定頻率峰值電流模式升壓(Boost)轉換器架構,核心由以下模塊構成: 集成功率 MOSFET 內置 80mΩ 導通電阻的 N 溝道 MOSFET,漏極(Drain)對應引腳 SW,源極(Source)內部接…

Java 日志:掌握本地與網絡日志技術

日志記錄是軟件開發中不可或缺的一部分&#xff0c;它為開發者提供了洞察應用程序行為、診斷問題和監控性能的手段。在 Java 生態系統中&#xff0c;日志框架如 Java Util Logging (JUL)、Log4j 和 Simple Logging Facade for Java (SLF4J) 提供了豐富的功能。然而&#xff0c;…

上位機知識篇---時鐘分頻

文章目錄 前言 前言 本文簡單介紹了一下時鐘分頻。時鐘分頻&#xff08;Clock Division&#xff09;是數字電路設計中常見的技術&#xff0c;用于將高頻時鐘信號轉換為較低頻率的時鐘信號&#xff0c;以滿足不同模塊的時序需求。它在處理器、FPGA、SoC&#xff08;片上系統&am…

推薦幾個免費提取音視頻文案的工具(SRT格式、通義千問、飛書妙記、VideoCaptioner、AsrTools)

文章目錄 1. 前言2. SRT格式2.1 SRT 格式的特點2.2 SRT 文件的組成2.3 SRT 文件示例 3. 通義千問3.1 官網3.2 上傳音視頻文件3.3 導出文案 4. 飛書妙記4.1 官網4.2 上傳音視頻文件4.3 導出文案4.4 缺點 5. VideoCaptioner5.1 GitHub地址5.2 下載5.2.1 通過GitHub下載5.2.2 通過…

Linux深度探索:進程管理與系統架構

1.馮諾依曼體系結構 我們常見的計算機&#xff0c;如筆記本。我們不常見的計算機&#xff0c;如服務器&#xff0c;大部分都遵守馮諾依曼體系。 截至目前&#xff0c;我們所認識的計算機&#xff0c;都是由?個個的硬件組件組成。 輸入設備&#xff1a;鍵盤&#xff0c;鼠標…

觀察者模式 (Observer Pattern)

觀察者模式(Observer Pattern)是一種行為型設計模式。它定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象。當主題對象的狀態發生變化時,會自動通知所有觀察者對象,使它們能夠自動更新自己的狀態。 一、基礎 1. 意圖 核心目的:定義對象間的一種一對…

Network.framework 的引入,不是為了取代 URLSession

Network.framework 的引入&#xff0c;不是為了取代 URLSession 如果你感覺 Network.framework 的引入, 可能是為了取代 URLSession, 那你就大錯特錯了&#xff01;這里需要非常準確地區分一下&#xff1a; &#x1f535; Network.framework 不是為了取代 URLSession。 &…

Redis 數據分片三大方案深度解析與 Java 實戰

Redis 數據分片是將數據分散存儲在多個 Redis 實例上的技術&#xff0c;以解決單個 Redis 實例在存儲容量、性能和可用性上的限制。常見的 Redis 數據分片方案包括客戶端分片、代理分片和Redis Cluster&#xff08;集群分片&#xff09;&#xff0c;以下為你詳細介紹&#xff1…

FreeBSD可以不經過windows服務器訪問windows機器上的共享文件嗎?

答案是&#xff1a;當然可以&#xff01; 使用sharity-light 軟件 可以使用sharity-light 軟件&#xff0c;直接不用安裝samba等軟件&#xff0c;直接訪問windows機器上的共享文件。 但是可惜的是&#xff0c;sharity-light在FreeBSD的ports里棄用了。看來是從FreeBSD 8 就開…

主流 LLM 部署框架

主流 LLM 部署框架 框架主要特點適用場景vLLM- 超快推理&#xff08;高吞吐&#xff09; - 動態批處理 - 支持 HuggingFace Transformer - 支持 PagedAttention高并發、低延遲在線推理TGI (Text Generation Inference)- Huggingface官方出品 - 多模型管理 - 支持動態量化 - 支持…

在 Vue 3 setup() 函數中使用 TypeScript 處理 null 和 undefined 的最佳實踐

在 Vue 3 中使用 setup() 函數和 TypeScript 時&#xff0c;null 和 undefined 是兩個需要特別關注的類型。雖然它們看起來都表示“沒有值”&#xff0c;但它們在 JavaScript 和 TypeScript 中有著不同的含義和使用場景。如果不小心處理它們&#xff0c;可能會導致潛在的 bug 或…

在 UniApp 中獲取當前頁面地址

在 UniApp 中獲取當前頁面地址&#xff0c;可以通過以下步驟實現&#xff1a; 方法說明&#xff1a; 獲取當前頁面實例&#xff1a;使用 getCurrentPages() 獲取頁面棧數組&#xff0c;最后一個元素即為當前頁面實例。 提取頁面路徑和參數&#xff1a;從頁面實例的 route 屬性…

【華為】防火墻雙擊熱備-之-主備模式-單外網線路-分享

FW1和FW2的業務接口都工作在三層&#xff0c;上行連接二層交換機。上行交換機連接運營商的接入點&#xff0c;運營商為企業分配的IP地址為100.100.100.2。現在希望FW1和FW2以主備備份方式工作。正常情況下&#xff0c;流量通過FW1轉發&#xff1b;當FW1出現故障時&#xff0c;流…

crossOriginLoading使用說明

1. 說明 此配置用于控制 Webpack 動態加載的代碼塊&#xff08;chunk&#xff09;&#xff08;例如代碼分割或懶加載的模塊&#xff09;在跨域&#xff08;不同域名&#xff09;加載時的行為。它通過為動態生成的 <script>標簽添加 crossorigin 屬性&#xff0c;確保符合…

windows中安裝VMware Workstation Pro虛擬機和ubuntu

目錄 一、安裝 VMware Workstation Pro 虛擬機 1、官網下載VMware Workstation Pro 1.1 選中 "VMware Workstation Pro for PC" 的 "DOWNLOAD NOW" 1.2 跳轉到broadcom登錄頁面 1.3 注冊賬號 1.4 輸入給郵箱收到的驗證碼信息&#xff0c;然后點擊”Verify…