golang用棧的方式從一段字串中匹配出{}
來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。一段字串中匹配出{},感覺還是沒有達到效果,僅僅是找出了括弧,但是沒有展示出那兩個兩兩匹配```gopackage mainimport ("fmt""log")//從一段字串中匹配出{}type Stack struct {size int64 //棧的容量top int64 //棧頂data []interface{}}func MakeStack( size int64) Stack{s :=Stack{}s.size=sizes.data =make([]interface{},size)return s}//入棧,空間不足,逐段升高func (s *Stack) Push(e interface{}) bool{if s.IsFull(){log.Printf("棧滿,無法入棧")return false}s.data[s.top]=es.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= 0for ;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)}```230 次點擊