当前位置: 首页 > news >正文

互联网网站制作公司哪家好微信广告平台

互联网网站制作公司哪家好,微信广告平台,南澳做网站,网站外部链接20. 有效的括号 这个是典型的使用栈,来进行匹配。 因为栈是先进后出,所以,最近的左括号一定在栈顶。如果不是,则就是不匹配了。 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 "strconv"func 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++
} 
http://www.15wanjia.com/news/48429.html

相关文章:

  • wordpress新站注意事项线上销售如何找到精准客户
  • js写的网站怎么做seo福建seo搜索引擎优化
  • 青岛北京网站建设自动推广引流app
  • 石家庄网站建设人员腾讯会议开始收费
  • 如何注册国外网站宁波seo哪家好
  • wordpress 禁用搜索怎么样做seo
  • php网页制作工具求职seo
  • 邮箱网站架构软广告经典例子
  • 国内大的做网站的公司seo咨询河北
  • 长春网站建设工作室百度seo排名推广
  • 上海商城网站建设成都seo公司
  • 凤岗网焦作网站seo
  • 做百度竞价网站搜索不到电商软文范例300字
  • 做网站安阳网络营销案例视频
  • 做网站具体收费知道百度
  • nginx 网站建设怎么设置自己的网站
  • 哪个网站做批发的东莞推广平台有哪些
  • 网站建设的功能有哪些外链兔
  • 怎么用本机做服务器发布网站点金推广优化公司
  • 多语言 网站源码上海网站seo诊断
  • 做公司 网站建设价格低热门推广平台
  • 软件开发和网站开发营销网址
  • 网站建设项目运作的可行性seo超级外链工具免费
  • 网站空间分类注册网站域名
  • 做网站 嵌入支付免费站推广网站在线
  • 家具公司网站模板下载天津百度关键词排名
  • 哪家公司做网站开发做得比较好关键词优化工具互点
  • 台州做网站优化哪家好今日头条热榜
  • 做网站可以不用框架吗百度统计代码
  • 郑州网站建设公司咨询赣州seo培训