150. Evaluate Reverse Polish Notation

如圖,題目要求遇到算號就對最後的兩個數字做計算,如果是數字則是把它擺在最後。簡單的說就是stack

以example 2 來說會先將 4, 13, 5 依序放入stack中。它的概念就是先進去的後出來。遇到計算符就是把前兩個取出來做一個計算,之後再放回stack中。取值之後golang就是直接切數組。python可以用list中的pop函數。
#GO
func evalRPN(tokens []string) int {
var tokenStack []int
var num int
var res int
for _, token := range tokens {
if token == "+" || token == "-" || token == "*" || token == "/" {
switch token {
case "+":
res = tokenStack[len(tokenStack)-2] + tokenStack[len(tokenStack)-1]
case "-":
res = tokenStack[len(tokenStack)-2] - tokenStack[len(tokenStack)-1]
case "*":
res = tokenStack[len(tokenStack)-2] * tokenStack[len(tokenStack)-1]
case "/":
res = tokenStack[len(tokenStack)-2] / tokenStack[len(tokenStack)-1]
}
tokenStack = tokenStack[:len(tokenStack)-2]
tokenStack = append(tokenStack, res)
} else {
num, _ = strconv.Atoi(token)
tokenStack = append(tokenStack, num)
}
}
return tokenStack[0]
}
#Python3
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
if len(tokens) == 1:
return int(tokens[0])
num_stack = []
for i in tokens:
if i == "+" or i == "-" or i == "*" or i == "/":
num = int(num_stack.pop())
if i == "+":
ans = int(num_stack.pop()) + num
if i == "-":
ans = int(num_stack.pop()) - num
if i == "*":
ans = int(num_stack.pop()) * num
if i == "/":
ans = int(num_stack.pop()) / num
num_stack.append(ans)
else:
num_stack.append(i)
return int(ans)
151. Reverse Words in a String

題意就是去除所有空格後,把裡面的單字做倒序組裝中間還要補空格。沒時間慢慢想了。一樣!暴力解!通通遍歷一次。要組裝時再遍歷數組一次。python就直接使用常用、好用的函式。像是split, append, join很基本也很好用。
#GO
func reverseWords(s string) string {
var index int
var words []string
var ans string
flag := false
s += " "
for k, v := range s {
if !flag && v != 32 {
index = k
flag = true
}
if flag && v == 32 {
word := s[index:k]
words = append(words, word)
flag = false
}
}
for i := len(words) - 1; -1 < i; i-- {
if i == 0 {
ans += words[i]
} else {
ans += words[i] + " "
}
}
return ans
}
#Python3
class Solution:
def reverseWords(self, s: str) -> str:
ans = []
for word in s.split(" ")[::-1]:
if word:
ans.append(word)
return " ".join(ans)
以上,有問題歡迎交流討論。