括号

20. 有效的括号

*爱你&永不变心* 提交于 2020-01-20 00:42:42
20. 有效的括号 难度: 简单 描述: 给定一个只包括 '(' , ')' , '{' , '}' , '[' , ']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 说明: 假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,请返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。 示例1: 输入: "()" 输出: true 示例2: 输入: "()[]{}" 输出: true 示例3: 输入: "(]" 输出: false 示例4: 输入: "([)]" 输出: false 示例5: 输入: "{[]}" 输出: true 代码实现: class Solution { public boolean isValid ( String s ) { char [ ] bracketsArr = s . toCharArray ( ) ; Stack < Character > assist = new Stack < > ( ) ; for ( char brackets : bracketsArr ) { if ( brackets == '(' || brackets ==

LeetCode 20. 有效的括号(Valid Parentheses )

天大地大妈咪最大 提交于 2020-01-18 23:27:03
题目描述 给定一个只包括 '(' , ')' , '{' , '}' , '[' , ']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入: "([)]" 输出: false 示例 5: 输入: "{[]}" 输出: true 解题思路 利用栈的思想,对于左括号直接入栈,对于右括号,判断栈顶元素是否为对应的左括号,若不是则返回false,是则出栈继续遍历下一个括号 代码 1 class Solution { 2 public: 3 bool isValid(string s) { 4 stack<char> st; 5 for(int i = 0; i < s.length(); i++){ 6 switch(s[i]){ 7 case '(': 8 case '[': 9 case '{': 10 st.push(s[i]); 11 break; 12 case ')':{ 13 if(st.empty() || st.top() != '(') return false; 14 st.pop(); 15

20. 有效的括号

对着背影说爱祢 提交于 2020-01-18 23:14:36
知乎ID: 码蹄疾 码蹄疾,毕业于哈尔滨工业大学。 小米广告第三代广告引擎的设计者、开发者; 负责小米应用商店、日历、开屏广告业务线研发; 主导小米广告引擎多个模块重构; 关注推荐、搜索、广告领域相关知识; 题目 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入: "([)]" 输出: false 示例 5: 输入: "{[]}" 输出: true 分析 stack 的经典题目,大学的数据结构课第一个例子就是这个。 Code class Solution { public boolean isValid(String s) { Map<Character, Character> charMap = new HashMap<>(); charMap.put('}', '{'); charMap.put(']', '['); charMap.put(')', '('); char [] stack = new char[s.length()]; int

20.有效括号(Valid Parentheses)

与世无争的帅哥 提交于 2020-01-18 23:10:39
题目: 由于只包含字符的字符串 '(' , ')' , '{' , '}' , '[' 和 ']' ,确定输入字符串是有效的。 括号必须关闭以正确的顺序, "()" 并且 "()[]{}" 都是有效的,但 "(]" 并 "([)]" 没有。 方法一: 思路:(1)首先将每对括号以键值对的形式添加到HashMap中,其中左半边括号为key,右半边括号为value; (2)从给定的字符串s的第一个元素下标开始(即i=0开始),直到s的最后一个元素的下标结束(即i=s.length()-1结束),若第i个元素为左半个括号,则将其压入栈中; 若第i个元素为右半个括号,若栈为空或者弹出的栈顶元素所应的value值不等于第i个元素,则返回false;否则i++; (3)循环执行结束,若栈为空则返回true,否则返回false 代码: 1 class Solution { 2 public boolean isValid(String s) { 3 4 HashMap<Character,Character> hm=new HashMap<Character,Character>();//创建Map用于存放括号 5 hm.put('(',')'); 6 hm.put('{','}'); 7 hm.put('[',']'); 8 9 Stack<Character> S=new Stack

一个算术表达式中的括号只有小括号。编写算法,判断一个表达式中的括号是否正确配对,表达式已经存入字符数组exp[]中,表达式的字符个数为n。

ぐ巨炮叔叔 提交于 2020-01-18 03:03:07
问题描述 一个算术表达式中的括号只有小括号。编写算法,判断一个表达式中的括号是否正确配对,表达式已经存入字符数组exp[]中,表达式的字符个数为n。 思路 在解决问题的过程中出现了一个子问题,但凭现有条件不能解决它,需要记下,等待以后出现可以解决它的条件后再返回解决,这种问题可以用栈来解决,栈具有记忆的功能,这是栈的FILO特性所延伸出来的一种特性。 源代码 # include <iostream> # define maxSize 50 # include <stdio.h> using namespace std ; int match ( char exp [ ] , int n ) { char stack [ maxSize ] ; int top = - 1 ; for ( int i = 0 ; i < n ; ++ i ) { if ( exp [ i ] == '(' ) stack [ ++ top ] = '(' ; if ( exp [ i ] == ')' ) { if ( top == - 1 ) return 0 ; else -- top ; } } if ( top == - 1 ) return 1 ; else return 0 ; } int main ( ) { int n ; cin >> n ; char exp1 [ n ] ;

括号匹配(栈)

旧巷老猫 提交于 2020-01-17 20:20:29
检查一段C语言代码的小括号 ( ) 、 中括号 [ ] 和大括号 { } 是否匹配。 输入格式: 在一行中输入一段C语言代码,长度不超过1000个字符(行末以换行符结束)。 输出格式: 第一行输出左括号的数量和右括号的数量,中间以一个空格间隔。 若括号是匹配的,在第二行打印 YES ,否则打印 NO 。 输入样例1: for(int i=0; i<v; i++){ visited[i] = 0; for(int j=0; j<v; j++) scanf("%d",&(g->Adj[i][j])); } 输出样例1: 8 8 YES 输入样例2: for(int i=0; i<v; i++) a(i]=0; 输出样例2: 2 2 NO思路: 注意两点:如果没有右括号与之匹配,不要break,要继续统计括号的数量;满足左括号都有右括号与之匹配,这时候可能有多余的左括号,因此不仅要判断flag=true,还要加上栈为空代码: import java.util.*; public class Main{ public static void main(String[] args) { Scanner scan=new Scanner(System.in); Stack<Character> sta=new Stack<Character>(); Map<Character,

python学习感想一

主宰稳场 提交于 2020-01-16 02:49:42
通过这几天的学习,发现python有一个很大的特点就是代码量少。 比如:打印Hello world,用C语言编写的话须先include函数库,再定义要执行的函数。 #include <stdio.h> int main(void){ printf("Hello, world!"); return 0; } 用java语言编写如下: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); } } 用Python编写如下: print("Hello, world!") 还记得在上学时,我用jsp开发各种xx管理系统,排错中经常遇到的情况是花括号不匹配,代码少时,jdk能返回是缺少花括号的错误,但是当代码量较大时,从返回的报错信息中就很难能判断出是花括号不匹配导致的问题了,这是,只能加入若干条System.out.println()通过断点来判断错误原因了。而Python语言中去掉了很多使用花括号的地方,只需要通过代码缩进,以“排版”的形式来代替花括号的包含隔离关系。我认为,这样的编程效果更直观更高效。 来源: CSDN 作者: hailang08 链接: https://blog.csdn.net/hailang08/article

shell中各种括号()、(())、[]、[[]]、{}的作用

北慕城南 提交于 2020-01-15 17:21:05
技巧小结: 字符串比较用双中括号[[ ]];算数比较用单中括号[ ]——左右留空格 算数运算用双小括号(( )) ;shell命令及输出用小括号( )——左右不留空格 快速替换用花括号{ }——左右留空格 反单引号起着命令替换的作用 单括号(): 另开命令组——小括号中的内容会开启一个子shell独立运行;括号中以分号连接,最后一个命令不需要;各命令和括号无空格 得到命令输出——a=$(command), 等同于a=$ command ,得到命令输出传递给变量a 初始化数组——array=(a b c d) 双括号(()): 省去$符号的算术运算—— for((i=0;i<5;i++)); if (($i<5)); a=5; ((a++)) 可将 $a 重定义为6;括号内支持多个表达式用逗号分开。 C语言规则运算——$((exp)),exp为符合C语言规则的运算符,表达式 跨进制运算——二进制、八进制、十六进制运算时,输出结果全都自动转化成了十进制。如:echo $((16#5f)) 结果为95 (16进位转十进制) 单中括号[ ]: 字符串比较——==和!= 整数比较——不等于:-gt:大于;-lt :小于;-eq:等于;-ne 数组索引——array[0] 双中括号[[]]: 字符串比较——可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell?

leecode 有效的括号

五迷三道 提交于 2020-01-15 09:40:56
题目: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入: "([)]" 输出: false 示例 5: 输入: "{[]}" 输出: true 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-parentheses 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解答: class Solution(object): def isValid(self, s): """ :type s: str :rtype: bool """ #1、栈 if len(s)%2!=0: return False dic = {'(':')','[':']','{':'}','?':'?'} stack = ['?'] #开括号少于闭括号时,stack.pop()会报错,所以提前处理 for c in s: if c in dic: stack.append(c) #开括号入栈

LeetCode

北战南征 提交于 2020-01-15 09:38:14
文章目录 hot100 1.有效的括号 hot100 1.有效的括号 题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4: 输入: “([)]” 输出: false 示例 5: 输入: “{[]}” 输出: true class Solution { HashMap < Character , Character > mapping ; public Solution ( ) { this . mapping = new HashMap ( ) ; mapping . put ( ')' , '(' ) ; mapping . put ( ']' , '[' ) ; mapping . put ( '}' , '{' ) ; } public boolean isValid ( String s ) { Stack < Character > result = new Stack ( ) ; for ( int i = 0 ; i < s .