LeetCode---有效的括号

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

有效字符串需满足:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


class Solution {
public:
    bool isValid(string s) {
        int a = s.size();
        if (a % 2==1)
            return false;
        unordered_map<char,char> pairs{
            {')','('},
            {']','['},
            {'}','{'},
        };
        stack<char> stk;
        for (char ch:s){
            if(pairs.count(ch)){
                if(stk.empty() || stk.top() != pairs[ch])
                    return false;
                stk.pop();

            }
            else{
                stk.push(ch);
            }
        }
        return stk.empty();
    }
};
答案中不会的知识点:

1: 需要引入的头文件不同
		map: #include < map >
		unordered_map: #include < unordered_map >
2:内部实现机理不同
		map: map内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二叉搜索树),
	红黑树具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一
	个元素。因此,对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行的操作。
	map中的元素是按照二叉搜索树(又名二叉查找树、二叉排序树,特点就是左子树上所有节点的键值
	都小于根节点的键值,右子树所有节点的键值都大于根节点的键值)存储的,使用中序遍历可将键值
	按照从小到大遍历出来。
		unordered_map: unordered_map内部实现了一个哈希表(也叫散列表,通过把关键码值映
	射到Hash表中一个位置来访问记录,查找的时间复杂度可达到O(1),其在海量数据处理中有着
	广泛应用)。因此,其元素的排列顺序是无序的。

适用处:对于那些有顺序要求的问题,用map会更高效一些
适用处:对于查找问题,unordered_map会更加高效一些,因此遇到查找问题,常会考虑一下用unordered_map

unordered_map<int, string> myMap={{ 5, "张大" },{ 6, "李五" }};//使用{}赋值
    myMap[2] = "李四";  //使用[ ]进行单个插入,若已存在键值2,则赋值修改,若无则插入。
    myMap.insert(pair<int, string>(3, "陈二"));//使用insert和pair插入
 stack<char> stk;

	stack<int> st;
	 st.push(i);//入栈
	 st.pop();//弹出栈顶元素
	 st.top();// 获得栈顶元素
	 empty()

//可以检测stack内是否为空,返回true为空,返回false为非空

size()

//返回stack内元素的个数
 

转自 https://blog.csdn.net/qq_21997625/article/details/84672775

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值