首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

5.有效的括号

【题号20】

题目描述:

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

括号必须以正确的顺序关闭,"()"和"()[]{}"是有效的但是"(]"和"([)]"不是。

解题思路:栈思想。

遍历字符串,用一个数组作为栈;

当遇到左括号时,则将其保存到数组中;

当遇到右括号时,则将数组中最后一个元素与之匹配,若可配对,则删除该元素,若不能配对,则字符串无效;

最后当字符串遍历结束后,若数组长度为0,则说明括号都已配对,否则字符串无效。

代码实现:

class Solution {

public:

bool isValid(string s) {

vectorarr;

int j=0;

for(int i=0;i

if(s[i]=='(' || s[i]=='{' || s[i]=='['){

arr.push_back(s[i]);

j++;

}

if(s[i]==')'){

if(j==0 || arr[j-1]!='(') return false;

arr.pop_back();

j--;

}

if(s[i]=='}'){

if(j==0 || arr[j-1]!='{') return false;

arr.pop_back();

j--;

}

if(s[i]==']'){

if(j==0 || arr[j-1]!='[') return false;

arr.pop_back();

j--;

}

}

if(arr.size()!=0)return false;

return true;

}

};

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180402G1POCS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券