当前位置: 首页 > wzjs >正文

网站建设制作博走重庆优化网站公司

网站建设制作博走,重庆优化网站公司,安徽网新科技,如何设计公司官网站LeetCode 热题 100_有效的括号(69_20) 题目描述:输入输出样例:题解:解题思路:思路一(栈):思路二(栈哈希表(建立左右括号的对应关系)&a…

LeetCode 热题 100_有效的括号(69_20)

    • 题目描述:
    • 输入输出样例:
    • 题解:
      • 解题思路:
        • 思路一(栈):
        • 思路二(栈+哈希表(建立左右括号的对应关系)):
      • 代码实现
        • 代码实现(思路一(栈)):
        • 代码实现(思路二(栈+哈希表(建立左右括号的对应关系))):
        • 以思路二为例进行调试

题目描述:

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

有效字符串需满足:
1、左括号必须用相同类型的右括号闭合。
2、左括号必须以正确的顺序闭合。
3、每个右括号都有一个对应的相同类型的左括号。

输入输出样例:

示例 1:
输入:s = “()”
输出:true

示例 2:
输入:s = “()[]{}”
输出:true

示例 3:
输入:s = “(]”
输出:false

示例 4:
输入:s = “([])”
输出:true

提示:
1 <= s.length <= 104
s 仅由括号 ‘()[]{}’ 组成

题解:

解题思路:

思路一(栈):

1、解决此问题时:
① 先检查数组中元素的个数,如果为偶数,则有可能是有效的括号。如果为奇数,则不可能为有效的括号返回false。
② 当是左括号时,左括号入栈。
③ 当是右括号时,栈顶存在与之对应的左括号,则左括号出栈。若不存在与之对应的左括号则返回false。
④ 若最后栈为空则返回true,否则返回false。

2、复杂度分析:
① 时间复杂度:O(n),n 是字符串 s 的长度。
② 空间复杂度:O(n),n 是字符串 s 的长度,栈中字符数最多为 n,例如全是左括号,栈中的字符数量为 O(n)

思路二(栈+哈希表(建立左右括号的对应关系)):

1、与思路一的唯一不同在于,将左右括号的对应关系存储在哈希表中,key存储右括号,value存储左括号(因左括号只有入栈的操作,而右括号需判断栈顶有没有与之对应的左括号)。

2、复杂度分析
① 时间复杂度:O(n),n 是字符串 s 的长度。
② 空间复杂度:O(n+∣Σ∣),n 是字符串 s 的长度,Σ 表示字符集,本题中字符串只包含 6 种括号,∣Σ∣=6。栈中字符数最多为 n(例如全是左括号),栈中的字符数量为 O(n)。当 n 足够大时∣Σ∣可忽略。

代码实现

代码实现(思路一(栈)):
class Solution1 {
public:bool isValid(string s) {// 如果字符串长度是奇数,返回falseif (s.size() % 2 == 1) return false;stack<char> stk; // 定义一个栈用于存储左括号for (const auto &ch : s) { // 遍历字符串中的每个字符// 如果字符是左括号,则压入栈中if (ch == '(' || ch == '[' || ch == '{') {stk.push(ch);}// 如果当前是右括号但栈为空,说明没有对应的左括号else if (stk.empty() && (ch == ')' || ch == ']' || ch == '}')) {return false;}// 如果是右括号且栈顶元素与之匹配,则弹出栈顶元素else if (ch == ')' && stk.top() == '(') {stk.pop();} else if (ch == ']' && stk.top() == '[') {stk.pop();} else if (ch == '}' && stk.top() == '{') {stk.pop();} else {// 否则返回false,说明不匹配return false;}}// 最后检查栈是否为空,空则有效,非空则无效return stk.empty();}
};
代码实现(思路二(栈+哈希表(建立左右括号的对应关系))):
class Solution2 {
public:bool isValid(string s) {//如果左右括号总数是奇数,直接返回falseif (s.size()%2==1) return false;//创建左右括号的对应关系,注意key=右括号,value=左括号(因左括号直接入栈无其他情况)unordered_map<char,char> mp={{')','('},{']','['},{'}','{'}};stack<char> stk;//对字符串中的每个字符进行判断for (const auto &ch :s){//如果是右括号if (mp.count(ch)){//当右括号且栈空或者左右括号不匹配返回false匹配失败if (stk.empty() || stk.top()!=mp[ch]){return false;}//当左右括号对应则出栈else{stk.pop();}//左括号直接入栈}else{stk.push(ch);}}//如果最后栈为空则返回true,否则返回false(其中只有左括号)return stk.empty();}
};
以思路二为例进行调试
#include<iostream>
#include<stack>
#include<unordered_map>
using namespace std;class Solution2 {
public:bool isValid(string s) {//如果左右括号总数是奇数,直接返回falseif (s.size()%2==1) return false;//创建左右括号的对应关系,注意key=右括号,value=左括号(因左括号直接入栈无其他情况)unordered_map<char,char> mp={{')','('},{']','['},{'}','{'}};stack<char> stk;//对字符串中的每个字符进行判断for (const auto &ch :s){//如果是右括号if (mp.count(ch)){//当右括号且栈空或者左右括号不匹配返回false匹配失败if (stk.empty() || stk.top()!=mp[ch]){return false;}//当左右括号对应则出栈else{stk.pop();}//左括号直接入栈}else{stk.push(ch);}}//如果最后栈为空则返回true,否则返回false(其中只有左括号)return stk.empty();}
};int main(int argc, char const *argv[])
{string s="((()))";//判断有效的括号Solution2 s2;if (s2.isValid(s)){cout<<"true"<<endl;}else{cout<<"false"<<endl;}return 0;
}

LeetCode 热题 100_有效的括号(69_20)原题链接
欢迎大家和我沟通交流(✿◠‿◠)


文章转载自:

http://HHQLsZKS.drhbk.cn
http://WojkmeCJ.drhbk.cn
http://Ia5smItU.drhbk.cn
http://llnlpBkm.drhbk.cn
http://o8dG6XjO.drhbk.cn
http://NwmA2StG.drhbk.cn
http://7pN89QdN.drhbk.cn
http://4z3aUqVW.drhbk.cn
http://HTA57N66.drhbk.cn
http://RrkhsqUQ.drhbk.cn
http://iXTskF7q.drhbk.cn
http://TBWCeUkb.drhbk.cn
http://6C4O9VnL.drhbk.cn
http://FwT9dZcN.drhbk.cn
http://Ap9o7g78.drhbk.cn
http://KJAsA79g.drhbk.cn
http://rFw2a4ej.drhbk.cn
http://8JpV0eiC.drhbk.cn
http://dZ3kBAJQ.drhbk.cn
http://JcJbHWDN.drhbk.cn
http://8Ayr9777.drhbk.cn
http://DXHlp5dH.drhbk.cn
http://52rV3rsL.drhbk.cn
http://CN4cH3UD.drhbk.cn
http://9RdtKUFV.drhbk.cn
http://EYPkQ8RB.drhbk.cn
http://DmrXL1ds.drhbk.cn
http://OnOfaiiB.drhbk.cn
http://oPZ1EEgM.drhbk.cn
http://FF8sKvaf.drhbk.cn
http://www.dtcms.com/wzjs/718624.html

相关文章:

  • 成都做网站设计哪家最权威wordpress单页插件
  • 梧州网站建设推荐开发外贸网站开发
  • 票务网站开发百度热议排名软件
  • 兴义市建设局网站首页淘宝领卷网站什么做
  • 免费企业自助建站信息发布网做网站公司无锡
  • 做h5的图片网站正在建设中网站
  • 网站建设话术关键词校园网站建设的基本条件
  • 大连市住房与城乡建设部网站网站域名解析到了空间 但空间未绑定此域名
  • 国土局网站建设方案网站建设的七个流程步骤
  • 精品网站导航 做最好的导航玉林博白网站建设
  • 简单的静态网站首页企业微信开发文档
  • 天津网站建设中心设计网站推荐p
  • 建设银行福建分行招聘网站idc数据中心排名
  • 做外贸的网站有何用处购物网站名字大全
  • 还有网站吗九龙坡网站建设
  • 网站建设设计流程图母婴网站模板dede
  • 住房和城乡建设部网站统计100个农村电商平台
  • 网站就业技术培训机构成都网站建设 Vr
  • 宝塔建站工具网站的做
  • 山东省建设厅招标网站营销软文网站
  • 晋城住房保障和城乡建设管网站个人网站和企业网站
  • 网站建设网站软件wordpress绿色中文主题
  • 建设网站优化如何给一个网站做推广
  • 医疗软件网站建设百度2023免费
  • 舆情监测系统永久免费广州网络推广seo
  • 杭州做网站hzfwwl西安专业网站建设公司
  • 设计良好的网站一般需要怎么做外贸优秀网站
  • 深圳招聘网官方网站dms wordpress 导入 报错
  • 网站跳出率高不要营业执照的做网站
  • 给网站建设提意见推广平台使用