上饶专业企业网站建设,网站制作是不是要先用ps做,三亚网红餐厅,建筑信用信息查询平台20. 有效的括号 
这个是典型的使用栈#xff0c;来进行匹配。 因为栈是先进后出#xff0c;所以#xff0c;最近的左括号一定在栈顶。如果不是#xff0c;则就是不匹配了。 
func isValid(s string) bool {stack : Stack{}dict : map[byte]byte {): (,]: [,}: {,}for _, it…20. 有效的括号 
这个是典型的使用栈来进行匹配。 因为栈是先进后出所以最近的左括号一定在栈顶。如果不是则就是不匹配了。 
func isValid(s string) bool {stack : Stack{}dict : map[byte]byte {): (,]: [,}: {,}for _, item : range []byte(s) {if leftVal, ok : dict[item]; ok {if stack.pop() ! leftVal {return false}} else {stack.push(item)}}return stack.length  0
}type Stack struct {data []bytelength int
}func (s *Stack) pop() (v byte) {if s.length  1 {return }v  s.data[s.length-1]s.data  s.data[:s.length-1]s.length--return 
}func (s *Stack) push(v byte) {s.data  append(s.data, v)s.length
} 1047. 删除字符串中的所有相邻重复项 
func removeDuplicates(s string) string {// 思路和栈顶不等的时候s2 : []byte(s)stack : Stack{}stack.push(s2[0])for i : 1; i  len(s2); i {if v : stack.top(); v ! s2[i] {stack.push(s2[i])} else {stack.pop()}}return string(stack.data)
}type Stack struct {data []bytelength int
}func (s *Stack) pop() (v byte) {if s.length  1 {return }v  s.data[s.length-1]s.data  s.data[:s.length-1]s.length--return 
}func (s *Stack) top() (v byte) {if s.length  1 {return }v  s.data[s.length-1]return 
}func (s *Stack) push(v byte) {s.data  append(s.data, v)s.length
}  
题目中是连续两个重复字符才删除那么是多个重复字符如何删除呢 可以增加一个last_char 变量存放着上一次的结果。 
s2 : []byte(s)
stack : Stack{}
stack.push(s2[0])
var lastChar  s2[0]
for i : 1; i  len(s2); i {v : stack.top()if v  s2[i] {stack.pop()} else if (v ! lastChar)  (v ! s2[i]) {// 和上一次字符相同时不需要入栈stack.push(s2[i])}
}
return string(stack.data)6. 逆波兰表达式求值 
逆波兰表达式是一种后缀表达式运算符号在后面前面俩是运算数。 
本质上还是使用栈来进行取值然后运算。 
import strconvfunc evalRPN(tokens []string) int {// 思路符号就退出两个数字然后运算既可stack : Stack{}var (s1 ints2 intresult int)for _, val : range tokens {if val   || val  - || val  * || val  / {s2  stack.pop()s1  stack.pop()if val   {stack.push(s1  s2)} else if val  - {stack.push(s1 - s2)} else if val  * {stack.push(s1 * s2)} else if val  / {stack.push(s1 / s2)}} else {intVal, _ : strconv.Atoi(val)stack.push(intVal)}}result  stack.pop()return result
}type Stack struct {data []intlength int
}func (s *Stack) pop() (v int) {if s.length  1 {return }v  s.data[s.length-1]s.data  s.data[:s.length-1]s.length--return 
}func (s *Stack) top() (v int) {if s.length  1 {return }v  s.data[s.length-1]return 
}func (s *Stack) push(v int) {s.data  append(s.data, v)s.length
}