中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

湖南城鄉(xiāng)建設(shè)部網(wǎng)站不收費(fèi)推廣網(wǎng)站有哪些

湖南城鄉(xiāng)建設(shè)部網(wǎng)站,不收費(fèi)推廣網(wǎng)站有哪些,邢臺網(wǎng)站建設(shè)哪家好,寶塔安裝wordpress教程這是一道 困難 題。 題目來自:leetcode 題目 給你一個字符串表達(dá)式 s ,請你實現(xiàn)一個基本計算器來計算并返回它的值。 注意: 不允許使用任何將字符串作為數(shù)學(xué)表達(dá)式計算的內(nèi)置函數(shù),比如 eval() 。 提示: s 由數(shù)字、‘’、‘-’…

這是一道?困難?題。

題目來自:leetcode

題目

給你一個字符串表達(dá)式?s?,請你實現(xiàn)一個基本計算器來計算并返回它的值。

注意: 不允許使用任何將字符串作為數(shù)學(xué)表達(dá)式計算的內(nèi)置函數(shù),比如?eval()?。

提示:

  • s?由數(shù)字、‘+’、‘-’、‘(’、‘)’、和 ’ ’ 組成
  • s?表示一個有效的表達(dá)式
  • +’ 不能用作一元運(yùn)算(例如, “+1” 和 “+(2 + 3)” 無效)
  • 輸入中不存在兩個連續(xù)的操作符
  • 每個數(shù)字和運(yùn)行的計算將適合于一個有符號的?32位?整數(shù)

示例 1:

輸入:s =?"1 + 1"
輸出:2

示例 2:

輸入:s =?" 2-1 + 2 "
輸出:3

示例 3:

輸入:s =?"(1+(4+5+2)-3)+(6+8)"
輸出:23

解題思路

這道題是 實現(xiàn)一個包含“加減乘除”的基本計算器 的擴(kuò)展,在表達(dá)式中增加了 括號 “(”, “)”正負(fù)數(shù),但是刪除了 “*” 和 “/”。

在原來的解題方法中補(bǔ)充以下幾點:

  1. 括號的處理:
    • 如果遇到左括號:直接壓入操作符棧。
    • 如果遇到右括號:將操作符棧中左括號后面的所有操作符出棧,并與數(shù)字棧進(jìn)行計算合并。
  2. 正負(fù)數(shù)的處理:
    • 可以使用 補(bǔ)0 的思路,在正負(fù)數(shù)前面加一個“0”,將表達(dá)式轉(zhuǎn)換為沒有正負(fù)號的式子。

那么如何確定“+”和“-”是代表算符還是正負(fù)號呢?

  1. 如果 “+”和“-” 是第一個非空字符,那么代表是正負(fù)號。
  2. 如果 “+”和“-” 的前一個非空字符也是“+”或者“-”,那么代表是正負(fù)號。
  3. 如果 “+”和“-” 的前一個非空字符是 左括號 ,那么代表是正負(fù)號。

:補(bǔ)0的思路只能用于加減法.

代碼實現(xiàn)


class Solution {private Deque<Integer> numStack = new LinkedList<>();private Deque<Character> optStack = new LinkedList<>();public int calculate(String s) {int n = s.length();boolean needZero = true;for(int i = 0; i < n; i++){char ch = s.charAt(i);if(this.isNumber(ch)){int num = 0;needZero = false;while(i < n && this.isNumber(s.charAt(i))){num = num * 10 + s.charAt(i) - '0';i++;}numStack.push(num);i--;}else if(ch == ' '){continue;}else if(ch == '('){optStack.push('(');needZero = true;continue;}else if(ch == ')'){while(optStack.peek() != '('){this.calc(numStack, optStack);}// 刪除左括號optStack.pop();needZero = false;}else{if(needZero){numStack.push(0);}while(!optStack.isEmpty() && optStack.peek() != '('){this.calc(numStack, optStack);}optStack.push(ch);needZero = true;}}while(!optStack.isEmpty()){this.calc(numStack, optStack);}return numStack.pop();}private boolean isNumber(char ch){return ch >= '0' && ch <= '9';}private void calc(Deque<Integer> numStack, Deque<Character> optStack){int num2 = numStack.pop();int num1 = numStack.pop();char opt = optStack.pop();if(opt == '+'){  numStack.push(num1 + num2);}else{numStack.push(num1 - num2);}}}

復(fù)雜度分析

時間復(fù)雜度:O(N)O(N)O(N),N 為字符串長度。

空間復(fù)雜度:O(N)O(N)O(N),N 為字符串長度。

http://www.risenshineclean.com/news/35308.html

相關(guān)文章:

  • 惠州網(wǎng)站制作費(fèi)用哈爾濱最新疫情通報
  • vs做網(wǎng)站出現(xiàn)顯示bug百度搜索資源平臺提交
  • 郵編域名做網(wǎng)站百度一下網(wǎng)頁
  • 手機(jī)網(wǎng)站生成app解析域名網(wǎng)站
  • 本溪網(wǎng)站建設(shè)網(wǎng)站建站公司
  • 家裝企業(yè)網(wǎng)站系統(tǒng)下載安卓優(yōu)化大師老版本
  • 如何經(jīng)營一個購物網(wǎng)站seo關(guān)鍵詞查詢工具
  • 上海市建設(shè)交通工會網(wǎng)站百度關(guān)鍵詞優(yōu)化專家
  • 做動漫網(wǎng)站如何應(yīng)用數(shù)據(jù)綁定百度一下你就知道百度一下
  • 中衛(wèi)企業(yè)管理培訓(xùn)網(wǎng)站優(yōu)化公司網(wǎng)站
  • 菏澤做網(wǎng)站公司百度搜索引擎優(yōu)化詳解
  • 深圳大浪網(wǎng)站建設(shè)深圳網(wǎng)
  • 杭州軟件app制作公司太原seo排名
  • 做電影網(wǎng)站需要什么條件網(wǎng)絡(luò)營銷策劃內(nèi)容
  • 深圳app開發(fā)公司哪家服務(wù)好巢湖seo推廣
  • 莆田網(wǎng)站建設(shè)哪家好什么是全網(wǎng)營銷推廣
  • 263企業(yè)郵箱登錄入口首頁上海seo公司哪家好
  • 買源碼做網(wǎng)站靠譜嗎網(wǎng)絡(luò)公司網(wǎng)絡(luò)推廣服務(wù)
  • 社會保險業(yè)務(wù)網(wǎng)站百度指數(shù)app官方下載
  • 東莞外貿(mào)公司建網(wǎng)站業(yè)務(wù)推廣方式
  • 發(fā)布個人免費(fèi)網(wǎng)站的一般流程圖重慶seo公司排名
  • app展示網(wǎng)站軟件排名優(yōu)化
  • 金華網(wǎng)站開發(fā)公司北京seo邢云濤
  • 西地那非片有依賴性嗎湘潭seo快速排名
  • 做物理的網(wǎng)站企業(yè)如何進(jìn)行網(wǎng)絡(luò)營銷
  • 甘肅省建設(shè)廳質(zhì)量投訴網(wǎng)站武漢百度seo網(wǎng)站優(yōu)化
  • 建網(wǎng)站是什么專業(yè)類別寧德市高中階段招生信息平臺
  • 網(wǎng)站建設(shè)計劃表模板下載百度指數(shù)數(shù)據(jù)分析平臺
  • 豐寧縣有做網(wǎng)站的嗎?站長申論
  • 設(shè)置wordpress上傳文件大小限制西安網(wǎng)站優(yōu)化培訓(xùn)