C++_Leecode20有效的括号
一、题目介绍
1.题目描述
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
2.题目提示
->1 <= s.length <= 104
->s仅由括号 '()[]{}' 组成
3.演示案例
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
二、题目分析
1.输入输出分析
字符串s---------->true/false
三、解法一:利用栈的结构进行解决
1.C++算法基础
1.1利用哈希表可以通过键找到值的特性来解决匹配问题,有点像数组,数组通过索引获得值,unordered_map通过键来获得对应的值。
->哈希表的创建与初始化
#include <unordered_map>
unordered_map<char,char> pairs;
pairs ={{'(',')'},{'[',']'},{'{','}'}};//注意这里最后一个键值对后面是没有逗号的,中间是全部用逗号隔开的不是分号也不是冒号,因为C++z中分号是用来间隔一个语句的。
->匹配
if (stk.top() != pairs[ch])
{return false;}
else {
...}
->C++中的true,false与TRUE,FALSE区别
false/true是标准C++语言里新增的关键字,而FALSE/TRUE是通过#define定义的
typedef int BOOL;
#define FALSE 0
#define TRUE 1
->unordered_map中的count()函数
该函数用于返回key出现的次数,由于unordered_map中的键只能出现一次,所以要么返回0,要么返回1。
1.2利用栈的数据结构解决括号的左括号的存储问题
->栈的创建和初始化
#include <stack>
stack<char> stk;
->和栈相关的函数
stk.empty() // 如果栈里的元素为空,返回1
stk.top() //用于获得栈顶的元素
stk.push() //往栈里添加新的元素
stk.pop() //出栈
stk.size() //返回该栈内的元素个数
1.3C++中查看数据的类型
#include <typeinfo>
string ="helloworld";
std::cout<<typeid(string).name()<<endl;
1.4C++11中对字符串的遍历
for(auto ch : str){
...}
2.我的题解
class Solution {
public:
bool isValid(string s) {
if (s.size() %2 ==1){
return false;
}
unordered_map<char,char> pairs = {
{')','('},
{']','['},
{'}','{'}
};
stack<char> stk;
for (char ch: s){
if (pairs.count(ch)){
if (stk.empty() || pairs[ch]!=stk.top()){
return false;
}
stk.pop();
}
else {
stk.push(ch);
}
}
return stk.empty();
}
};
3.易错
什么情况下,if()后面的else语句可以省略不写?
就是大括号{}里面代码的执行后,后面的代码也要执行,else可以省略,假如{}括号里面的执行了,大括号后面就不执行了,则需要else,所以不要盲目地省略else语句。
C++_Leecode20有效的括号的更多相关文章
- javascript匹配各种括号书写是否正确
今天在codewars上做了一道题,如下 看上去就是验证三种括号各种嵌套是否正确书写,本来一头雾水,一种括号很容易判断, 但是三种怎么判断! 本人只是个前端菜鸟,,不会什么高深的正则之类的. 于是,在 ...
- 明显调用的表达式前的括号必须具有(指针)函数类型 编译器错误 C2064
看到“明显调用的表达式前的括号必须具有(指针)函数类型”这句时我才发现我的语文水平有多烂,怎么看都看不懂,折腾了半天才知道是哪里出了问题. 举个简单的例子 class CTest { void (CT ...
- [LeetCode] Remove Invalid Parentheses 移除非法括号
Remove the minimum number of invalid parentheses in order to make the input string valid. Return all ...
- [LeetCode] Different Ways to Add Parentheses 添加括号的不同方式
Given a string of numbers and operators, return all possible results from computing all the differen ...
- [LeetCode] Longest Valid Parentheses 最长有效括号
Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...
- [LeetCode] Generate Parentheses 生成括号
Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...
- [LeetCode] Valid Parentheses 验证括号
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- SQL 去掉某字段括号中的值
今天在数据库匹配数据的时候,发现一些数据存在别名,导致我的数据匹配不上.在这里记录分享一下 例如: 李钟硕 (Lee Jong Suk),这里我匹配的是 “李钟硕” 示例1: SELECT rever ...
- JavaScript面试时候的坑洼沟洄——逗号、冒号与括号
看完了javaScript数据类型和表达式与运算符相关知识后以为可以对JavaScript笔试题牛刀小试一把了,没想到有一次次的死在逗号,冒号和括号上,不得已再看看这几个符号吧. 逗号 逗号我们常见的 ...
随机推荐
- web.xml 配置文件?
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...
- GDB死锁调试
1.测试代码 代码中开启两个线程,加锁后轮流输出数据,其中一个线程误将pthread_mutex_unlock(),写成pthread_mutex_lock()代码如下: int g_tickets ...
- 利用 Python 进行数据分析(Python 数据分析)· 第 2 版
译者:SeanCheney 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 机器学习交流群 629470233 ApacheCN 学习资源 Sklearn 与 ...
- halcon视觉入门钢珠识别
halcon视觉入门钢珠识别 经过入门篇,我们有了基础的视觉识别知识.现在加以应用. 有如下图片: 我们需要识别图片中比较明亮的中间区域,有黑色的钢珠,我们需要知道他的位置和面积. 分析如何识别 编写 ...
- 通过安装HomeBrew来安装Python3
首先说什么是HomeBrew? 下面引用简书上一个博客的解释:(博客链接:http://www.jianshu.com/p/d229ac7fe77d) 为什么要使用Homebrew Mac OS X是 ...
- python数据分析入门笔记[1]
1.Numpy: Numpy是python科学计算的基础包,它提供以下功能(不限于此): (1)快速高效的多维数组对象naarray (2)用于对数组执行元素级计算以及直接对数组执行数学运算的函数 ( ...
- Note -「最大团-最小度不等式」
这是什么奇怪的名字qwq. 一些定义 只为便于理解,没有苛求专业的定义. 简单无向图:不存在重边.自环的无向图. \(\delta(G)\):无向图 \(G\) 中结点的最小度数.即 \(\m ...
- JAVA 1.对象和封装
1. 2. 3.Java类里面属性可以付初使值 4.属性的名字一小写开头 5 6.构造方法 1.语法: 7.staitc的应用 1.statia可以用来修饰:方法,属性,代码块 , st ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第06章 - 部署kube-apiserver组件
文章目录 1.6.部署kube-apiserver 1.6.0.创建kubernetes证书和私钥 1.6.1.生成kubernetes证书和私钥 1.6.2.创建metrics-server证书和私 ...
- 【性能测试实战】jmeter + k8s + 微服务 + skywalking + efk,测试都在学的热门技术
原文持续更新完善:https://www.cnblogs.com/uncleyong/p/15475614.html 前言:当前的热门主流技术是哪些?测开为啥那么火?90%以上的测试对测开认识不准确 ...