面試150 基本計算器

在這里插入圖片描述

思路

利用棧(stack)來保存進入括號前的計算狀態(包括當前計算結果和符號),以便在括號結束后正確恢復計算上下文。代碼通過遍歷字符串,識別數字、加號、減號和括號。遇到數字時構造完整數值;遇到加減號時將上一個數與符號累加到當前結果中,并更新符號;遇到左括號時將當前結果和符號壓棧,重置為括號內的新表達式;遇到右括號時將括號內結果乘以括號前符號并加到括號前的結果上。最終再將最后一個數加上,得到總結果。整個過程遵循從左到右、遇括號遞歸的求值邏輯。

class Solution:def calculate(self, s: str) -> int:stack=[] #來存放括號外的結果和符號result=0 #當前累計的計算結果number=0 #當前正在解析的數字sign=1 #當前數字前的符號for char in s:if char.isdigit():number=number*10+int(char)elif char=='+':result+=sign*numbernumber=0sign=1 #下一個數是正數elif char=='-':result+=sign*numbernumber=0sign=-1 #下一個是負數elif char=='(':stack.append(result)#保持當前計算狀態stack.append(sign) result=0sign=1elif char==')':result+=sign*numbernumber=0result*=stack.pop() #拿出來的是進入括號之前的signresult+=stack.pop() #拿上一個結果result+=sign*numberreturn result

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

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

相關文章

源哈希(sh)解析

源哈希(Source Hashing)是一種負載均衡算法,它根據請求的源 IP 地址(或其他標識符)生成哈希值,然后根據這個哈希值將請求分配到特定的后端服務實例。這種方法常用于確保來自同一客戶端的請求始終被路由到同…

axios的使用以及封裝

前言: 在現代前端開發中,網絡請求是不可避免的核心功能之一。無論是獲取后端數據、提交表單信息,還是與第三方 API 交互,高效且可靠的 HTTP 請求庫至關重要。axios 作為一款基于 Promise 的 HTTP 客戶端,憑借其簡潔的 …

github上部署自己的靜態項目

前置知識1、要在github部署項目要提交打包后的靜態文件(html,css,js)到倉庫里2、我們看下github所提供給我們的部署方式有啥,如下所見;要么是/root文件夾(就說倉庫里全是打包后的產物:html,css,js要全部放到…

能源管理綜合平臺——分布式能源項目一站式監控

綜合性的能源企業管理面臨著項目多、分布散、信息孤島等問題,分布式的多項目能源在線監控管理平臺是一種集成了多個能源項目的數據采集、監控、分析和管理的系統。平臺集成GIS能力,能夠展示項目的整體分布態勢,對不同地點、不同類型的能源項目…

修改阿里云vps為自定義用戶登錄

win系統上找到控制面板-->用戶賬戶-->更改賬戶類型點擊更改賬戶類型,此時我們看到vps的默認管理員賬戶Administrator。為了防止vps被別人使用默認賬戶Administrator攻擊,我們添加一個用戶賬戶,點擊添加用戶賬戶。 用戶名建議奇葩點&…

Linux: perf: debug問題一例,cpu使用率上升大約2%;多線程如何細化cpu及perf數據分析

文章目錄 前提面臨的問題內核級別函數的差別繼續debug總結根據pid前提 一個進程安置在一個CPU上,新功能上線之后,固定量的業務打起來,占用的CPU是42%。之前沒有新功能的情況下,CPU占用是40%。差了大約2%。而且這個進程里的線程數非常多,有50多個線程。從差距看變化不大,…

計算階梯電費

實現一個 Python 程序,根據使用的電量(從控制臺中讓用戶輸入)計算需要交的電費,電量分為兩個階梯,小于 200 度和大于 200 度,如果電量小于等于 200 度,電價就是 0.5 元/度,如果電量大…

替代MT6701,3D 霍爾磁性角度傳感器芯片

KTH5502 是一款基于垂直霍爾技術的高精度絕對角度傳感器芯片,支持全角度(0–360)測量。 芯片內部集成 X、Y 軸的垂直霍爾元件和 Z 軸的水平霍爾元件,能夠同時感知磁場在 X、Y、Z 三個 方向的變化。得益于垂直霍爾技術優異的正交匹…

華為 Mate 80 影像配置揭秘:硬軟雙升

7 月 7 日,知名數碼博主爆料了華為 Mate 80 系列的影像配置,引發廣泛關注。從曝光信息來看,Mate 80 系列在影像方面延續華為的技術探索,通過硬件升級與算法優化,力圖為用戶帶來更出色的拍攝體驗。? 爆料顯示&#xff…

Android studio升級AGP需要注意哪些

deep seek回答: 深度思考完成 用時26秒 嗯,用戶詢問的是在Android Studio中升級AGP需要注意哪些事項。這個問題很實用,因為AGP升級確實是個容易踩坑的過程。讓我看看搜索結果里有什么關鍵信息。 首先注意到搜索結果里有幾個高可信度的資料專…

MapReduce數據處理過程2萬字保姆級教程

目錄 1. MapReduce 的核心思想:分而治之的藝術 2. Hadoop MapReduce 的架構:從宏觀到微觀 3. WordCount 實例:從代碼到執行的完整旅程 4. 源碼剖析:Job.submit 的魔法 5. Map 任務的執行:從分片到鍵值對 6. Shuffle 階段:MapReduce 的幕后英雄 7. Reduce 任務的執行…

Rust單例模式:OnceLock的使用指南

想象一下你在構建一個需要全局數據庫連接的Rust應用。傳統語言里,單例模式常常伴隨著鎖的沉重和初始化競態的焦慮。但在Rust的世界里,OnceLock就像個輕巧的守門人,只允許一次安全的通行。 簡潔的OnceLock實現 看看這段代碼如何優雅地解決單…

JavaScript性能優化實戰:表格控件高效開發指南

引言 在現代Web應用開發中,電子表格功能已成為數據分析、報表展示等場景的核心需求。SpreadJS作為一款高性能的純前端電子表格控件,能夠完美兼容Excel文件格式,支持百萬級數據量和復雜公式計算。然而隨著數據規模的增長和業務邏輯的復雜化&a…

RWA(現實世界資產)代幣化系統構建指南:合規、跨境與機構級解決方案

——金融科技公司機構市場拓展戰略報告前言:RWA代幣化的機構化浪潮與市場機遇 截至2025年6月,全球RWA(Real World Assets)鏈上規模突破240億美元,3年增長超380%,成為僅次于穩定幣的增速第二賽道。貝萊德、摩…

QML Label組件

QML中的Label組件是構建用戶界面時最常用的文本顯示控件之一,它繼承自Text元素但提供了更豐富的UI特性和主題集成支持。本文將全面介紹Label的核心功能、屬性配置、使用技巧以及與Text組件的區別,幫助開發者高效構建美觀的文本界面。 Label組件基礎 La…

使用 GDB 調試 Redis 服務進程指南

1. 準備工作 安裝 GDB 在大多數 Linux 發行版上,執行: sudo apt-get update sudo apt-get install gdb確保有足夠磁盤空間 Core dump 文件可能較大,請提前檢查磁盤剩余空間: df -h .可選:使用 tmux 或 screen 為避免 S…

深度學習-環境準備

安裝python,miniconda(最后步驟關于python環境變量部分全部勾選),pycharm 關于離線安裝numpy和matplotlib(我的環境連不上網) 我們先去 PyPI The Python Package Index 下載離線包 在搜索框搜索你的包名稱,這里是 m…

記錄在Windows系統用Python 3.12環境實現Nuitka過程

內容只提供Windows 10 與 Windows 11 下,搭建 Python 3.12 環境,并使用 Nuitka 將腳本打包為可執行文件的詳細流程。全文分為以下幾部分: 準備工作與系統要求 安裝 Python 3.12 配置環境變量與 pip 創建虛擬環境(推薦&#xff…

深入解析C#接口聲明:核心規則與最佳實踐

接口聲明的核心約束 禁止包含的成員類型 ? 數據成員(字段、常量)? 靜態成員(靜態方法/屬性) 理由:接口僅定義契約,不涉及實現或狀態存儲。 允許的成員類型(僅非靜態函數成員) ? 方…

Javaweb - 10.6 請求轉發和響應重定向

目錄 概述 請求轉發 邏輯圖 測試代碼 總結 響應重定向 邏輯圖 測試代碼 總結 完! 概述 什么是請求轉發和響應重定向? 請求轉發和響應重定向,是 web 應用中,間接訪問項目資源的兩種手段,也是 Servlet 控制頁…