有效的括号--利用栈

思路:从字符串的第一个位置开始遍历,若是该位置和栈顶元素能配对那么让栈顶元素出栈,若是不能和栈顶元素配对则讲该元素压入栈中。若是有效的字符串那么当栈中将没有字符串元素。
给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。
    示例 1:

**输入:**s = "()"

**输出:**true

示例 2:

**输入:**s = "()[]{}"

**输出:**true

示例 3:

**输入:**s = "(]"

**输出:**false

示例 4:

**输入:**s = "([])"

**输出:**true

cpp 复制代码
class Solution {
public:
    bool isValid(string s) {
    int len = s.size();
    stack<char>st;
    st.push('#');
    for(int i = 0; i < len; i++)
    {
        if ((s[i] == ')' && st.top() == '(')||(s[i] == ']' && st.top() == '[') ||(s[i] == '}' && st.top() == '{'))
         st.pop();
         else
         {
            st.push(s[i]);
         }
    }
    return st.top() == '#';
    }
};
相关推荐
CoderYanger9 小时前
优选算法-优先级队列(堆):75.数据流中的第K大元素
java·开发语言·算法·leetcode·职场和发展·1024程序员节
希望有朝一日能如愿以偿9 小时前
力扣每日一题:能被k整除的最小整数
数据结构·算法·leetcode
Controller-Inversion9 小时前
力扣53最大字数组和
算法·leetcode·职场和发展
rit84324999 小时前
基于感知节点误差的TDOA定位算法
算法
m0_372257029 小时前
ID3 算法为什么可以用来优化决策树
算法·决策树·机器学习
q***25219 小时前
SpringMVC 请求参数接收
前端·javascript·算法
数模加油站10 小时前
25认证杯C题成品论文第一弹【冲奖硬核+无盲点解析】
算法·数学建模·认证杯·25认证杯
MobotStone10 小时前
数字沟通之道
人工智能·算法
点云SLAM10 小时前
Boost库中Math 模块的插值(interpolation使用和示例
算法·插值·boost库·b-spline·akima 样条·单调三次样条·barycentric 插值
鸭子程序员10 小时前
c++ 算法
开发语言·c++·算法