题目描述
给定一个字符串,里边可能包含“()”、“[]”、“{}”三种括号,请编写程序检查该字符串中的括号是否成对出现,且嵌套关系正确。
若括号成对出现且嵌套关系正确,或该字符串中无括号字符,输出:true;
若未正确使用括号字符,输出:false。
实现时,无需考虑非法输入。
输入描述
无
输出描述
无
用例
输入 | (1+2)/(0.5+1) |
输出 | true |
说明 | 无 |
题目解析
的变种题,解题思路相同。
JavaScript算法源码
/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
console.log(getResult(line));
});
function getResult(line) {
const regExp = /[^()[]{}]/g;
// 去除非括号字符
line = line.replace(regExp, "");
const map = {
")": "(",
"]": "[",
"}": "{",
};
const stack = [];
for (let c of line) {
if (stack.length && map[c]) {
if (stack.at(-1) === map[c]) {
stack.pop();
continue;
} else {
return false;
}
}
stack.push(c);
}
return stack.length == 0;
}
Java算法源码
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
// 输入获取
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
System.out.println(getResult(s));
}
// 算法入口
public static boolean getResult(String s) {
// 去除非括号字符
s = s.replaceAll("[^\(\)\[\]\{\}]", "");
HashMap<Character, Character> map = new HashMap<>();
map.put(')', '(');
map.put(']', '[');
map.put('}', '{');
LinkedList<Character> stack = new LinkedList<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (stack.size() > 0 && map.containsKey(c)) {
if (stack.getLast() == map.get(c)) {
stack.removeLast();
continue;
} else {
return false;
}
}
stack.add(c);
}
return stack.size() == 0;
}
}
Python算法源码
import re
# 输入获取
s = input()
# 算法入口
def getResult(s):
# 去除非括号字符
s = re.sub(r"[^()[]{}]", "", s)
map = {
")": "(",
"]": "[",
"}": "{"
}
stack = []
for i in range(len(s)):
c = s[i]
if len(stack) > 0 and map.get(c) is not None:
if stack[-1] == map[c]:
stack.pop()
continue
else:
return False
stack.append(c)
return len(stack) == 0
# 算法调用
print(str(getResult(s)).lower())
免责声明:
1、IT资源小站为非营利性网站,全站所有资料仅供网友个人学习使用,禁止商用
2、本站所有文档、视频、书籍等资料均由网友分享,本站只负责收集不承担任何技术及版权问题
3、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除下载链接并致以最深的歉意
4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
5、一经注册为本站会员,一律视为同意网站规定,本站管理员及版主有权禁止违规用户
6、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和IT资源小站的同意
7、IT资源小站管理员和版主有权不事先通知发贴者而删除本文
评论0