golang用栈的方式从一段字符串中匹配出{}

yinshidaoshi · · 1259 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一段字符串中匹配出{},感觉还是没有达到效果,仅仅是找出了括号,但是没有展示出那两个两两匹配 ```go package main import ( "fmt" "log" ) //从一段字符串中匹配出{} type Stack struct { size int64 //栈的容量 top int64 //栈顶 data []interface{} } func MakeStack( size int64) Stack{ s :=Stack{} s.size=size s.data =make([]interface{},size) return s } //入栈,空间不足,逐段升高 func (s *Stack) Push(e interface{}) bool{ if s.IsFull(){ log.Printf("栈满,无法入栈") return false } s.data[s.top]=e s.top++ return true } //出栈,栈顶降低 func (s *Stack) Pop() (r interface{},err error){ if s.IsEmpty() { err =fmt.Errorf("栈已空,无法完成出栈") log.Printf("栈已空,无法完成出栈") return } s.top-- r =s.data[s.top] return } //判断栈是否满 func (s *Stack) IsFull() bool{ return s.top==s.size } //判断栈是否为空 func (s *Stack) IsEmpty() bool{ return s.top==0 } func (s *Stack) Traverse(fn func(r interface{}),goorto bool) { //go true遍历进栈 false 遍历出栈 if goorto { var i int64= 0 for ;i<s.top;i++ { fn(s.data[i]) } }else{ for i:=s.top-1;i>=0;i-- { fn(s.data[i]) } } } func (s *Stack) Mate(str string) { for _,v:=range str{ s.Push(string(v)) if string(v)=="{"||string(v)=="}"{ fmt.Println(s.Pop()) //fmt.Println(id) } } } func main() { str :="{adfd{{zjhgh}luy}" s :=MakeStack(20) s.Mate(str) fmt.Println(s) }```

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1259 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传