Skip to content

Latest commit

 

History

History

0020.valid-parentheses

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

题目描述

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true

示例 2:

输入: "()[]{}"
输出: true

示例 3:

输入: "(]"
输出: false

示例 4:

输入: "([)]"
输出: false

示例 5:

输入: "{[]}"
输出: true

解题思路

代码实现

Golang

import (
	"container/list"
	"strings"
)

func isValid(s string) bool {
	if s == "" {
		return true
	}
	s = strings.Replace(s, " ", "", -1)
	stack := list.New()
	trMap := map[string]string{
		")": "(",
		"}": "{",
		"]": "[",
	}
	for v := range s {
		switch s[v : v+1] {
		case "(", "{", "[":
			stack.PushBack(s[v : v+1])
		case ")", "}", "]":
			if stack.Len() == 0 || stack.Back().Value != trMap[s[v:v+1]] {
				return false
			} else {
				stack.Remove(stack.Back())
			}
		}
	}
	return stack.Len() == 0
}