国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Golang每日一練(leetDay0081) 基本計(jì)算器I\II Basic Calculator

這篇具有很好參考價(jià)值的文章主要介紹了Golang每日一練(leetDay0081) 基本計(jì)算器I\II Basic Calculator。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Golang每日一練(leetDay0081) 基本計(jì)算器I\II Basic Calculator

目錄

224. 基本計(jì)算器 Basic Calculator????????

227. 基本計(jì)算器 II Basic Calculator??????

?? 每日一練刷題專(zhuān)欄???

Rust每日一練 專(zhuān)欄

Golang每日一練 專(zhuān)欄

Python每日一練 專(zhuān)欄

C/C++每日一練 專(zhuān)欄

Java每日一練 專(zhuān)欄


224. 基本計(jì)算器 Basic Calculator

給你一個(gè)字符串表達(dá)式?s?,請(qǐng)你實(shí)現(xiàn)一個(gè)基本計(jì)算器來(lái)計(jì)算并返回它的值。

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

  • 1 <= s.length <= 3?* 10^5
  • s?由數(shù)字、'+''-'、'('、')'、和?' '?組成
  • s?表示一個(gè)有效的表達(dá)式
  • '+'?不能用作一元運(yùn)算(例如,?"+1"?和?"+(2 + 3)"?無(wú)效)
  • '-'?可以用作一元運(yùn)算(即?"-1"?和?"-(2 + 3)"?是有效的)
  • 輸入中不存在兩個(gè)連續(xù)的操作符
  • 每個(gè)數(shù)字和運(yùn)行的計(jì)算將適合于一個(gè)有符號(hào)的 32位 整數(shù)

代碼: 只有+-沒(méi)有*/,但有括號(hào)

package main

import "fmt"

func calculate(s string) int {
	stack := make([]int, 0)
	num := 0
	sign := '+'
	for i := 0; i < len(s); i++ {
		c := s[i]
		if isDigit(c) {
			num = num*10 + int(c-'0')
		}
		if c == '(' {
			left := 1
			j := i + 1
			for left > 0 {
				if s[j] == '(' {
					left++
				} else if s[j] == ')' {
					left--
				}
				j++
			}
			num = calculate(s[i+1 : j])
			i = j - 1
		}
		if c != ' ' && !isDigit(c) || i == len(s)-1 {
			if sign == '-' {
				num = -num
			}
			stack = append(stack, num)
			sign = rune(c)
			num = 0
		}
	}
	sum := 0
	for _, num := range stack {
		sum += num
	}
	return sum
}

func isDigit(c byte) bool {
	return c >= '0' && c <= '9'
}

func main() {
	s := "1 + 1"
	fmt.Println(calculate(s))
	s = " 2-1 + 2 "
	fmt.Println(calculate(s))
	s = "(1+(4+5+2)-3)+(6+8)"
	fmt.Println(calculate(s))
}

輸出:

2
3
23


227. 基本計(jì)算器 II Basic Calculator

給你一個(gè)字符串表達(dá)式?s?,請(qǐng)你實(shí)現(xiàn)一個(gè)基本計(jì)算器來(lái)計(jì)算并返回它的值。

整數(shù)除法僅保留整數(shù)部分。

你可以假設(shè)給定的表達(dá)式總是有效的。所有中間結(jié)果將在?[-2^31, 2^31 - 1]?的范圍內(nèi)。

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

示例 1:

輸入:s = "3+2*2"
輸出:7

示例 2:

輸入:s = " 3/2 "
輸出:1

示例 3:

輸入:s = " 3+5 / 2 "
輸出:5

提示:

  • 1 <= s.length <= 3 * 10^5
  • s?由整數(shù)和算符?('+', '-', '*', '/')?組成,中間由一些空格隔開(kāi)
  • s?表示一個(gè)?有效表達(dá)式
  • 表達(dá)式中的所有整數(shù)都是非負(fù)整數(shù),且在范圍?[0, 2^31 - 1]?內(nèi)
  • 題目數(shù)據(jù)保證答案是一個(gè)?32-bit 整數(shù)

代碼: 只有+-*/,沒(méi)有括號(hào)

package main

import "fmt"

func calculate(s string) int {
	stack := make([]int, 0)
	num := 0
	sign := '+'
	for i := 0; i < len(s); i++ {
		c := s[i]
		if isDigit(c) {
			num = num*10 + int(c-'0')
		}
		if c != ' ' && !isDigit(c) || i == len(s)-1 {
			if sign == '+' {
				stack = append(stack, num)
			} else if sign == '-' {
				stack = append(stack, -num)
			} else if sign == '*' {
				stack[len(stack)-1] *= num
			} else if sign == '/' {
				stack[len(stack)-1] /= num
			}
			sign = rune(c)
			num = 0
		}
	}
	sum := 0
	for _, num := range stack {
		sum += num
	}
	return sum
}

func isDigit(c byte) bool {
	return c >= '0' && c <= '9'
}

func main() {
	s := "3+2*2"
	fmt.Println(calculate(s))
	s = " 3/2 "
	fmt.Println(calculate(s))
	s = " 3+5 / 2"
	fmt.Println(calculate(s))
}

輸出:

7
1
5


Stack和Queue

都是一種線(xiàn)性數(shù)據(jù)結(jié)構(gòu),其主要區(qū)別在于數(shù)據(jù)的操作方式。

Stack

是一種后進(jìn)先出(Last In First Out,LIFO)的數(shù)據(jù)結(jié)構(gòu),即最后一個(gè)入棧的元素最先出棧,其操作包括壓棧(push)和彈棧(pop)。

Queue

是一種先進(jìn)先出(First In First Out,F(xiàn)IFO)的數(shù)據(jù)結(jié)構(gòu),即最先入隊(duì)的元素最先出隊(duì),其操作包括入隊(duì)(enqueue)和出隊(duì)(dequeue)。

相同點(diǎn)

在于都可以使用數(shù)組或鏈表來(lái)實(shí)現(xiàn),同時(shí)都是基于線(xiàn)性結(jié)構(gòu)的數(shù)據(jù)類(lèi)型。

不同點(diǎn)

在于其數(shù)據(jù)操作的方式不同,Stack的操作方式是LIFO,而Queue的操作方式是FIFO。

兩種數(shù)據(jù)結(jié)構(gòu)在不同的場(chǎng)景下有不同的應(yīng)用,比如在計(jì)算機(jī)中的函數(shù)調(diào)用中常用Stack來(lái)實(shí)現(xiàn)函數(shù)調(diào)用棧,而在消息隊(duì)列中則常用Queue來(lái)實(shí)現(xiàn)消息的異步處理。

Golang每日一練(leetDay0081) 基本計(jì)算器I\II Basic Calculator


?? 每日一練刷題專(zhuān)欄???

? 持續(xù),努力奮斗做強(qiáng)刷題搬運(yùn)工!

?? 點(diǎn)贊,你的認(rèn)可是我堅(jiān)持的動(dòng)力!?

???收藏,你的青睞是我努力的方向!?

? 評(píng)論,你的意見(jiàn)是我進(jìn)步的財(cái)富!??

??主頁(yè):https://hannyang.blog.csdn.net/?

Golang每日一練(leetDay0081) 基本計(jì)算器I\II Basic Calculator

Rust每日一練 專(zhuān)欄

(2023.5.16~)更新中...

Golang每日一練(leetDay0081) 基本計(jì)算器I\II Basic Calculator

Golang每日一練 專(zhuān)欄

(2023.3.11~)更新中...

Golang每日一練(leetDay0081) 基本計(jì)算器I\II Basic Calculator

Python每日一練 專(zhuān)欄

(2023.2.18~2023.5.18)暫停更

Golang每日一練(leetDay0081) 基本計(jì)算器I\II Basic Calculator

C/C++每日一練 專(zhuān)欄

(2023.2.18~2023.5.18)暫停更

Golang每日一練(leetDay0081) 基本計(jì)算器I\II Basic Calculator

Java每日一練 專(zhuān)欄

(2023.3.11~2023.5.18)暫停更文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-465618.html

到了這里,關(guān)于Golang每日一練(leetDay0081) 基本計(jì)算器I\II Basic Calculator的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Golang每日一練(leetDay0116) 路徑交叉、回文對(duì)

    Golang每日一練(leetDay0116) 路徑交叉、回文對(duì)

    目錄 335. 路徑交叉 Self-crossing???????? 336. 回文對(duì) Palindrome Pairs???????? ?? 每日一練刷題專(zhuān)欄??? Rust每日一練 專(zhuān)欄 Golang每日一練 專(zhuān)欄 Python每日一練 專(zhuān)欄 C/C++每日一練 專(zhuān)欄 Java每日一練 專(zhuān)欄 給你一個(gè)整數(shù)數(shù)組? distance ? 。 從? X-Y ?平面上的點(diǎn)? (0,0) ?開(kāi)始,先向北

    2024年02月12日
    瀏覽(22)
  • Golang每日一練(leetDay0049) 二叉樹(shù)專(zhuān)題(9)

    Golang每日一練(leetDay0049) 二叉樹(shù)專(zhuān)題(9)

    目錄 144. 二叉樹(shù)的前序遍歷 Binary-tree Preorder Traversal???? 145. 二叉樹(shù)的前序遍歷 Binary-tree Postorder Traversal???? 對(duì)比: 94. 二叉樹(shù)的中序遍歷 Binary-tree Inorder Traversal???? 146. LRU緩存 LRU Cache?????? ?? 每日一練刷題專(zhuān)欄??? Golang每日一練 專(zhuān)欄 Python每日一練 專(zhuān)欄 C/C++每日一

    2024年02月04日
    瀏覽(31)
  • Golang每日一練(leetDay0102) 刪除無(wú)效的括號(hào)、累加數(shù)

    Golang每日一練(leetDay0102) 刪除無(wú)效的括號(hào)、累加數(shù)

    目錄 295. 數(shù)據(jù)流的中位數(shù) Find-median-from-data-stream??????? 301. 刪除無(wú)效的括號(hào) Remove Invalid Parentheses??????? 306. 累加數(shù) Additive Number????? ?? 每日一練刷題專(zhuān)欄??? Rust每日一練 專(zhuān)欄 Golang每日一練 專(zhuān)欄 Python每日一練 專(zhuān)欄 C/C++每日一練 專(zhuān)欄 Java每日一練 專(zhuān)欄 中位數(shù) 是有

    2024年02月10日
    瀏覽(27)
  • Golang每日一練(leetDay0098) 生命、Nim、猜數(shù)字游戲

    Golang每日一練(leetDay0098) 生命、Nim、猜數(shù)字游戲

    目錄 289. 生命游戲 Game Of Life?????? 292. Nim 游戲 Nim Game???? 299. 猜數(shù)字游戲 Bulls and Cows?????? ?? 每日一練刷題專(zhuān)欄??? Rust每日一練 專(zhuān)欄 Golang每日一練 專(zhuān)欄 Python每日一練 專(zhuān)欄 C/C++每日一練 專(zhuān)欄 Java每日一練 專(zhuān)欄 生命游戲 ? 是英國(guó)數(shù)學(xué)家約翰·何頓·康威在 1970 年發(fā)

    2024年02月09日
    瀏覽(22)
  • Golang每日一練(leetDay0065) 位1的個(gè)數(shù)、詞頻統(tǒng)計(jì)

    Golang每日一練(leetDay0065) 位1的個(gè)數(shù)、詞頻統(tǒng)計(jì)

    目錄 191. 位1的個(gè)數(shù) Nnumber of 1-bits???? 192. 統(tǒng)計(jì)詞頻 Word Frequency?????? ?? 每日一練刷題專(zhuān)欄??? Golang每日一練 專(zhuān)欄 Python每日一練 專(zhuān)欄 C/C++每日一練 專(zhuān)欄 Java每日一練 專(zhuān)欄 編寫(xiě)一個(gè)函數(shù),輸入是一個(gè)無(wú)符號(hào)整數(shù)(以二進(jìn)制串的形式),返回其二進(jìn)制表達(dá)式中數(shù)字位數(shù)為

    2024年02月06日
    瀏覽(25)
  • Golang每日一練(leetDay0061) 表列序號(hào)、階乘后的零

    Golang每日一練(leetDay0061) 表列序號(hào)、階乘后的零

    目錄 171. Excel 表列序號(hào) Excel Sheet Column Number???? 172. 階乘后的零 Factorial Trailing Zeroes?????? ?? 每日一練刷題專(zhuān)欄??? Golang每日一練 專(zhuān)欄 Python每日一練 專(zhuān)欄 C/C++每日一練 專(zhuān)欄 Java每日一練 專(zhuān)欄 給你一個(gè)字符串? columnTitle ?,表示 Excel 表格中的列名稱(chēng)。返回? 該列名稱(chēng)對(duì)

    2024年02月04日
    瀏覽(60)
  • Golang每日一練(leetDay0095) 第一個(gè)錯(cuò)誤的版本、完全平方數(shù)

    Golang每日一練(leetDay0095) 第一個(gè)錯(cuò)誤的版本、完全平方數(shù)

    目錄 278. 第一個(gè)錯(cuò)誤的版本 First Bad Version???? 279. 完全平方數(shù) Perfect Squares?????? ?? 每日一練刷題專(zhuān)欄??? Rust每日一練 專(zhuān)欄 Golang每日一練 專(zhuān)欄 Python每日一練 專(zhuān)欄 C/C++每日一練 專(zhuān)欄 Java每日一練 專(zhuān)欄 你是產(chǎn)品經(jīng)理,目前正在帶領(lǐng)一個(gè)團(tuán)隊(duì)開(kāi)發(fā)新的產(chǎn)品。不幸的是,你

    2024年02月09日
    瀏覽(34)
  • Golang每日一練(leetDay0115) 重新安排行程、遞增的三元子序列

    Golang每日一練(leetDay0115) 重新安排行程、遞增的三元子序列

    目錄 332. 重新安排行程 Reconstruct Itinerary???????? 334. 遞增的三元子序列 Increasing Triplet Subsequence????? ?? 每日一練刷題專(zhuān)欄??? Rust每日一練 專(zhuān)欄 Golang每日一練 專(zhuān)欄 Python每日一練 專(zhuān)欄 C/C++每日一練 專(zhuān)欄 Java每日一練 專(zhuān)欄 給你一份航線(xiàn)列表? tickets ?,其中? tickets[i]

    2024年02月16日
    瀏覽(21)
  • Golang每日一練(leetDay0118) 扁平化嵌套列表迭代器、整數(shù)拆分

    Golang每日一練(leetDay0118) 扁平化嵌套列表迭代器、整數(shù)拆分

    目錄 341. 扁平化嵌套列表迭代器 Flatten Nested List Iterator?????? 343. 整數(shù)拆分 Integer Break?????? ?? 每日一練刷題專(zhuān)欄??? Rust每日一練 專(zhuān)欄 Golang每日一練 專(zhuān)欄 Python每日一練 專(zhuān)欄 C/C++每日一練 專(zhuān)欄 Java每日一練 專(zhuān)欄 給你一個(gè)嵌套的整數(shù)列表? nestedList ?。每個(gè)元素要么是

    2024年02月16日
    瀏覽(54)
  • Golang每日一練(leetDay0075) 打家劫舍II、最短回文串

    Golang每日一練(leetDay0075) 打家劫舍II、最短回文串

    目錄 213. 打家劫舍 II House Robber ii?????? 214. 最短回文串 Shortest Palindrome???????? ?? 每日一練刷題專(zhuān)欄??? Rust每日一練 專(zhuān)欄 Golang每日一練 專(zhuān)欄 Python每日一練 專(zhuān)欄 C/C++每日一練 專(zhuān)欄 Java每日一練 專(zhuān)欄 你是一個(gè)專(zhuān)業(yè)的小偷,計(jì)劃偷竊沿街的房屋,每間房?jī)?nèi)都藏有一定的

    2024年02月06日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包