91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang中怎么利用leetcode實現逆波蘭式

發布時間:2021-08-02 16:31:38 來源:億速云 閱讀:161 作者:Leah 欄目:大數據

今天就跟大家聊聊有關golang中怎么利用leetcode實現逆波蘭式,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

根據逆波蘭表示法,求表達式的值。

有效的運算符包括 +, -, *, / 。每個運算對象可以是整數,也可以是另一個逆波蘭表達式。

說明:

整數除法只保留整數部分。

給定逆波蘭表達式總是有效的。換句話說,表達式總會得出有效數值且不存在除數為 0 的情況。

示例 1:

輸入: ["2", "1", "+", "3", "*"]輸出: 9解釋: ((2 + 1) * 3) = 9

示例 2:

輸入: ["4", "13", "5", "/", "+"]輸出: 6解釋: (4 + (13 / 5)) = 6

示例 3:

輸入: ["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]輸出: 22解釋: ((10 * (6 / ((9 + 3) * -11))) + 17) + 5= ((10 * (6 / (12 * -11))) + 17) + 5= ((10 * (6 / -132)) + 17) + 5= ((10 * 0) + 17) + 5= (0 + 17) + 5= 17 + 5= 22

解題思路:

本題很簡單,理解逆波蘭式就ok

 逆波蘭式求解原理:

1,從左往右掃描token

2,如果式操作數,入棧

3,如果是操作符,彈出兩個操作數

4,計算結果,將結果入棧

5,掃描完token,棧中,剩下結果,結果出棧

import "strconv"
func evalRPN(tokens []string) int {  var s stack  for i := 0; i < len(tokens); i++ {    if !isOperator(tokens[i]) {      s.Push(tokens[i])    } else {      op2 := s.Pop()      op1 := s.Pop()      res := eval(op1, op2, tokens[i])      s.Push(fmt.Sprint(res))    }  }  r := s.Pop()  rv, _ := strconv.ParseInt(r, 10, 64)  return int(rv)
}
func eval(op1 string, op2 string, token string) int64 {  o1, _ := strconv.ParseInt(op1, 10, 64)  o2, _ := strconv.ParseInt(op2, 10, 64)  switch token {  case "+":    return o1 + o2  case "-":    return o1 - o2  case "*":    return o1 * o2  case "/":    return o1 / o2  }  return 0}
func isOperator(token string) bool {  return token == "+" || token == "-" || token == "*" || token == "/"}
type stack struct {  data []string}
func (s *stack) Push(str string) {  s.data = append(s.data, str)}
func (s *stack) Pop() string {  if len(s.data) < 1 {    return ""  }  str := s.data[len(s.data)-1]  s.data = s.data[:len(s.data)-1]  return str}

看完上述內容,你們對golang中怎么利用leetcode實現逆波蘭式有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿拉善盟| 会泽县| 新民市| 饶河县| 南召县| 东海县| 铜陵市| 成武县| 娱乐| 芒康县| 德清县| 永安市| 台湾省| 汝南县| 喀什市| 扎兰屯市| 紫阳县| 清丰县| 重庆市| 阿尔山市| 蓬溪县| 开江县| 信宜市| 枣阳市| 织金县| 沅江市| 合山市| 万宁市| 定陶县| 新绛县| 新竹市| 中江县| 平湖市| 额尔古纳市| 焦作市| 常熟市| 红桥区| 三穗县| 马边| 鲁山县| 定安县|