Valid Parentheses
Given a string containing just the characters'('
,')'
,'{'
,'}'
,'['
and']'
,
determine if the input string is valid.
The brackets must close in the correct order,"()"
and"()[]{}"
are
all valid but"(]"
and"([)]"
are
not.
对栈熟悉的,一开始就会想到栈的应用了。
严慧敏那本书也介绍了差不多的栈应用。
思路应该很好想:
1 利用一个栈保存string s里面的字符
2 判断如果左括号(,{,[入栈,如果右括号]}),与栈顶成对就进栈,不成对就入栈,如果此时栈为空,可以提前判断返回false
3 最后判断栈是否为空,空返回真,非空返回假。
我这里增加一个额外函数把这些括号转换为整数,以方便判断第二种情况,使得程序更加简洁。
class Solution {
public:
bool isValid(string s)
{
stack<char> stk;
for (int i = 0; i < s.length(); i++)
{
switch (s[i])
{
case '(': case '{': case '[':
stk.push(s[i]);
break;
case ')': case '}': case ']':
if (!stk.empty())
{
if (cToInt(stk.top()) + cToInt(s[i]) == 0) stk.pop();
else stk.push(s[i]);
}
else if (stk.empty())
{
return false;
}
break;
default:
break;
}
}
return stk.empty();
}
int cToInt(char c)
{
switch (c)
{
case '(':
return -3;
case '{':
return -2;
case '[':
return -1;
case ']':
return 1;
case '}':
return 2;
case ')':
return 3;
default:
break;
}
}
};
分享到:
相关推荐
LeetCode Valid Parenthese解决方案
leetcode 2 有效括号 给定一个只包含字符'(' , ')' , '{' , '}' , '['和']'的字符串,确定输入字符串是否有效。 输入字符串在以下情况下有效: * 左括号必须由相同类型的括号封闭。 * 左括号必须以正确的顺序关闭。 ...
例如,给出 n = 3,生成结果为:void generateParenthesis(int left, int right, string str, vect
leetcode-java, 我的LeetCode在线在线判断解决方案 leetcode-java我的 LeetCode在线判断系统的解决方案。插件生成状态 要求Java> = 1.6Gradle> = 1.8.6 ( 1.8.6 是我唯一尝试的版本)生成 Eclipse 项目
22. 括号生成参考博客1力扣上不错的解解法1:回溯+剪枝对于这种列出所有结果的题首先还是考虑用递归 Recursion 来解,由于字符串只有左括号和右括号两种
# 22. 括号生成 题目链接解题思路:创建组合原理,先放左括号,再放右括号,左括号数不能超过 n,右括号数要与右括号数一致List<String> list
原创:leetcode 22.括号生成【回溯】对待这种问题,千万别暴力搜索,那样太笨了。但是这个方法是最容易理解的//回溯法 (后面的括号) 不可以大于 (前面
c语言 c语言_c语言编程基础之leetcode题解第22题括号生成
c++ c++_c++编程基础之leetcode题解第22题括号生成
颜色分类leetcode My Leetcode Problems Solutions Using javascript(ES6) 1 Two Sum 两数之和 5 Longest Palindromic Substring 最长回文子串 7 Reverse Integer 整数反转 9 Palindrome Number 回文数 11 Container...
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入:n = 1 输出:["()...
刷LeetCode刷LeetCode刷LeetCode刷LeetCode刷LeetCode
LeetCode-Swift, 快速LeetCode解决方案 LeetCodeLeetCode在线判断是一个包含很多收费算法的网站。 them Google Google Google Google LinkedIn this this repo 。 请免费参考并收费STAR以支持这个 repo,
第四章 Leetcode 题解 ...20. Valid Parentheses 21. Merge Two Sorted Lists 22. Generate Parentheses 23. Merge k Sorted Lists 24. Swap Nodes in Pairs 25. Reverse Nodes in k-Group 26. Remove Dupli
LeetCode判断字符串是否循环 LeetCode解题思路总结 1.两数之和 方法一:Map 1.创建一个map 2.for循环遍历nums数组 3.用target减nums[i]得到key 4.检查map里面是否有key var twoSum = function (nums, target) { var ...
leetcode 答案leetcode leetcode在线判断答案
Leetcode扑克 Leetcode Starting from 2020/08/02 Leetcode practice with Python (for now) Daily Challenge + Selected Questions From Using Leetcode Plugin for Solutions ID English Title 中文题目名称 ...
用栈判断括号匹配 Regular Expression Matching 递归匹配 wildcard matching 动态规划 longest common prefix , 简单 valid number, hard, 用有限自动机 integer to roman ,easy , 模拟 roman to integer ,easy , ...
版本1:class Solution {//回文串问题bool isValid(string s) {//缺失//不对应//没有弹干净版本2:class Sol
题目来源:https://leetcode-cn.com/problems/generate-parentheses/submissions/ 题目 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为...