括号匹配
题目
给定一个字符串,里边可能包含“()”、“[]”、“{}”三种括号,请编写程序检查该字符串中的括号是否成对出现,且嵌套关系正确。若括号成对出现且嵌套关系正确,或该字符串中无括号字符,输出:true;若未正确使用括号字符,输出:false。 实现时,无需考虑非法输入。
输入描述:
包含括号的算数表达式。
输出描述:
括号是否匹配
示例1
输入
ode>(1+2)/(0.5+1) ode>
输出
ode>true ode>
解题思路
实现如下:
第一步:使用Scanner类从控制台输入一行字符串,并将其存储在values变量中。
第二步:创建HashMap和HashSet用于存储括号的匹配关系。
第三步:将括号的匹配关系存入charMap中,并将左右括号存入charSet中。
第四步:创建一个Stack对象,用于存储左括号。
第五步:将values变量转换为字符数组,然后遍历数组,如果遇到括号,就将其压入栈中。
第六步:如果右括号出现,就检查栈顶的元素是否与右括号的匹配,如果匹配就弹出栈顶元素,否则输出false。
第七步:最后检查栈是否为空,如果为空则说明括号匹配,输出true