当前位置: 首页 > news >正文

监控性能网站模板免费云服务器主机

监控性能网站模板,免费云服务器主机,2016年做水果行业专业网站,住房城乡建设部官网站一、问题描述 题目描述 给定一个字符串#xff0c;里边可能包含“()”、“[]”、“{}”三种括号#xff0c;请编写程序检查该字符串中的括号是否成对出现#xff0c;且嵌套关系正确。 若括号成对出现且嵌套关系正确#xff0c;或该字符串中无括号字符#xff0c;输出里边可能包含“()”、“[]”、“{}”三种括号请编写程序检查该字符串中的括号是否成对出现且嵌套关系正确。 若括号成对出现且嵌套关系正确或该字符串中无括号字符输出true 若未正确使用括号字符输出false。 实现时无需考虑非法输入。 输入描述 无 输出描述 无 用例 用例 1 输入: (12)/(0.51)输出: true解题思路 使用栈 使用一个栈来跟踪未匹配的左括号。遍历字符串对于每个字符 如果是左括号(, [, {将其压入栈中。如果是右括号), ], }检查栈顶是否有对应的左括号 如果有弹出栈顶的左括号。如果没有返回 false。 遍历结束后如果栈为空说明所有括号都正确匹配返回 true。如果栈不为空说明有未匹配的左括号返回 false。 特殊情况 如果字符串中没有括号字符直接返回 true。 详细步骤 读取输入 从标准输入读取一个字符串。 初始化栈 创建一个空栈 stack用于存储未匹配的左括号。 遍历字符串 遍历字符串中的每个字符 char 如果 char 是左括号(, [, {将其压入栈中。如果 char 是右括号), ], } 检查栈顶是否有对应的左括号 如果有弹出栈顶的左括号。如果没有返回 false。 检查栈是否为空 遍历结束后如果栈为空返回 true。如果栈不为空返回 false。 用例解释 用例 1 输入 (12)/(0.51) 输出 true 解释 遍历字符串 遇到 (压入栈中。遇到 )检查栈顶是否有 (有则弹出。遇到 (压入栈中。遇到 )检查栈顶是否有 (有则弹出。 遍历结束后栈为空说明所有括号都正确匹配返回 true。 通过上述步骤我们可以高效地检查字符串中的括号是否成对出现且嵌套关系正确。这种方法的时间复杂度为 O(n)其中 n 是字符串的长度。 二、JavaScript算法源码 以下是 JavaScript 代码 的详细中文注释和逻辑讲解 JavaScript 代码 /* JavaScript Node ACM模式 控制台输入获取 */ const readline require(readline);// 创建 readline 接口用于从控制台读取输入 const rl readline.createInterface({input: process.stdin, // 输入流output: process.stdout, // 输出流 });// 监听输入事件 rl.on(line, (line) {// 调用 getResult 函数处理输入并输出结果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; // 匹配失败返回 false}}// 将当前字符压入栈中stack.push(c);}// 如果栈为空说明所有括号都匹配成功return stack.length 0; }代码逻辑讲解 1. 输入获取 使用 readline 模块从控制台读取输入。监听 line 事件当用户输入一行内容时调用 getResult 函数处理。 2. 算法入口 步骤 1定义正则表达式 regExp用于匹配非括号字符。 正则表达式 /[^\(\)\[\]\{\}]/g 表示匹配所有非括号字符。 步骤 2使用 replace 方法去除非括号字符。 例如输入 a(b{c}d)e处理后得到 ({})。 步骤 3定义括号映射关系 map。 右括号作为键左括号作为值。 步骤 4使用栈 stack 来检查括号是否匹配。 遍历处理后的字符串 如果当前字符是右括号检查栈顶元素是否是对应的左括号。 如果匹配成功弹出栈顶元素。如果匹配失败返回 false。 如果当前字符是左括号直接压入栈中。 步骤 5遍历结束后检查栈是否为空。 如果栈为空说明所有括号都匹配成功返回 true。如果栈不为空说明有未匹配的括号返回 false。 示例运行 输入 a(b{c}d)e处理步骤 去除非括号字符得到 ({})。遍历字符串 遇到 (压入栈中栈为 [(]。遇到 {压入栈中栈为 [(, {]。遇到 }检查栈顶元素 {匹配成功弹出栈顶元素栈为 [(]。遇到 )检查栈顶元素 (匹配成功弹出栈顶元素栈为 []。 遍历结束栈为空返回 true。 输出 true总结 功能检查输入字符串中的括号是否匹配。核心逻辑 去除非括号字符。使用栈检查括号是否匹配。 适用场景需要检查括号匹配的场景例如代码语法检查。注意事项 输入字符串可能包含非括号字符需要先去除。栈的使用是解决括号匹配问题的经典方法。 如果有其他问题欢迎随时提问 三、Java算法源码 以下是 Java 代码 的详细中文注释和逻辑讲解 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); // 创建 Scanner 对象用于从控制台读取输入String s sc.nextLine(); // 读取一行输入System.out.println(getResult(s)); // 调用 getResult 方法处理输入并输出结果}// 算法入口public static boolean getResult(String s) {// 去除非括号字符s s.replaceAll([^\\(\\)\\[\\]\\{\\}], ); // 使用正则表达式去除非括号字符// 定义括号映射关系HashMapCharacter, Character map new HashMap();map.put(), (); // 右圆括号对应左圆括号map.put(], [); // 右方括号对应左方括号map.put(}, {); // 右花括号对应左花括号// 使用栈来检查括号是否匹配LinkedListCharacter 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; // 匹配失败返回 false}}// 将当前字符压入栈中stack.add(c);}// 如果栈为空说明所有括号都匹配成功return stack.size() 0;} }代码逻辑讲解 1. 输入获取 使用 Scanner 类从控制台读取输入。调用 sc.nextLine() 读取一行输入并将其存储在字符串 s 中。 2. 算法入口 步骤 1使用正则表达式去除非括号字符。 正则表达式 [^\\(\\)\\[\\]\\{\\}] 表示匹配所有非括号字符。例如输入 a(b{c}d)e处理后得到 ({})。 步骤 2定义括号映射关系 map。 使用 HashMap 存储右括号和左括号的对应关系。 步骤 3使用栈 stack 来检查括号是否匹配。 遍历处理后的字符串 如果当前字符是右括号检查栈顶元素是否是对应的左括号。 如果匹配成功弹出栈顶元素。如果匹配失败返回 false。 如果当前字符是左括号直接压入栈中。 步骤 4遍历结束后检查栈是否为空。 如果栈为空说明所有括号都匹配成功返回 true。如果栈不为空说明有未匹配的括号返回 false。 示例运行 输入 a(b{c}d)e处理步骤 去除非括号字符得到 ({})。遍历字符串 遇到 (压入栈中栈为 [(]。遇到 {压入栈中栈为 [(, {]。遇到 }检查栈顶元素 {匹配成功弹出栈顶元素栈为 [(]。遇到 )检查栈顶元素 (匹配成功弹出栈顶元素栈为 []。 遍历结束栈为空返回 true。 输出 true总结 功能检查输入字符串中的括号是否匹配。核心逻辑 去除非括号字符。使用栈检查括号是否匹配。 适用场景需要检查括号匹配的场景例如代码语法检查。注意事项 输入字符串可能包含非括号字符需要先去除。栈的使用是解决括号匹配问题的经典方法。 如果有其他问题欢迎随时提问 四、Python算法源码 以下是 Python 代码 的详细中文注释和逻辑讲解 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() # 匹配成功弹出栈顶元素continueelse:return False # 匹配失败返回 False# 将当前字符压入栈中stack.append(c)# 如果栈为空说明所有括号都匹配成功return len(stack) 0# 算法调用 print(str(getResult(s)).lower()) # 调用 getResult 方法处理输入并输出结果转换为小写代码逻辑讲解 1. 输入获取 使用 input() 函数从控制台读取一行输入并将其存储在变量 s 中。 2. 算法入口 步骤 1使用正则表达式去除非括号字符。 正则表达式 r[^\(\)\[\]\{\}] 表示匹配所有非括号字符。例如输入 a(b{c}d)e处理后得到 ({})。 步骤 2定义括号映射关系 map。 使用字典存储右括号和左括号的对应关系。 步骤 3使用栈 stack 来检查括号是否匹配。 遍历处理后的字符串 如果当前字符是右括号检查栈顶元素是否是对应的左括号。 如果匹配成功弹出栈顶元素。如果匹配失败返回 False。 如果当前字符是左括号直接压入栈中。 步骤 4遍历结束后检查栈是否为空。 如果栈为空说明所有括号都匹配成功返回 True。如果栈不为空说明有未匹配的括号返回 False。 3. 算法调用 调用 getResult(s) 方法处理输入并将结果转换为字符串后输出转换为小写。 示例运行 输入 a(b{c}d)e处理步骤 去除非括号字符得到 ({})。遍历字符串 遇到 (压入栈中栈为 [(]。遇到 {压入栈中栈为 [(, {]。遇到 }检查栈顶元素 {匹配成功弹出栈顶元素栈为 [(]。遇到 )检查栈顶元素 (匹配成功弹出栈顶元素栈为 []。 遍历结束栈为空返回 True。 输出 true总结 功能检查输入字符串中的括号是否匹配。核心逻辑 去除非括号字符。使用栈检查括号是否匹配。 适用场景需要检查括号匹配的场景例如代码语法检查。注意事项 输入字符串可能包含非括号字符需要先去除。栈的使用是解决括号匹配问题的经典方法。 如果有其他问题欢迎随时提问 五、C/C算法源码 以下是 C 代码 和 C 语言代码 的实现并附带详细的中文注释和逻辑讲解。 C 代码 #include iostream #include stack #include unordered_map #include string using namespace std;// 算法入口 bool getResult(string s) {// 去除非括号字符string filtered;for (char c : s) {if (c ( || c ) || c [ || c ] || c { || c }) {filtered c; // 只保留括号字符}}// 定义括号映射关系unordered_mapchar, char map {{), (},{], [},{}, {}};// 使用栈来检查括号是否匹配stackchar stack;// 遍历处理后的字符串for (char c : filtered) {// 如果栈不为空且当前字符是右括号if (!stack.empty() map.count(c)) {// 检查栈顶元素是否是对应的左括号if (stack.top() map[c]) {stack.pop(); // 匹配成功弹出栈顶元素continue;} else {return false; // 匹配失败返回 false}}// 将当前字符压入栈中stack.push(c);}// 如果栈为空说明所有括号都匹配成功return stack.empty(); }int main() {// 输入获取string s;getline(cin, s); // 读取一行输入// 算法调用cout boolalpha getResult(s) endl; // 输出结果boolalpha 用于输出 true/falsereturn 0; }C 代码逻辑讲解 1. 输入获取 使用 getline(cin, s) 从控制台读取一行输入并将其存储在字符串 s 中。 2. 算法入口 步骤 1去除非括号字符。 遍历字符串 s只保留括号字符(, ), [, ], {, }。将过滤后的字符存储在 filtered 字符串中。 步骤 2定义括号映射关系 map。 使用 unordered_map 存储右括号和左括号的对应关系。 步骤 3使用栈 stack 来检查括号是否匹配。 遍历处理后的字符串 filtered 如果当前字符是右括号检查栈顶元素是否是对应的左括号。 如果匹配成功弹出栈顶元素。如果匹配失败返回 false。 如果当前字符是左括号直接压入栈中。 步骤 4遍历结束后检查栈是否为空。 如果栈为空说明所有括号都匹配成功返回 true。如果栈不为空说明有未匹配的括号返回 false。 3. 算法调用 调用 getResult(s) 方法处理输入并输出结果boolalpha 用于输出 true/false 而不是 1/0。 C 语言代码 #include stdio.h #include stdlib.h #include string.h #include stdbool.h// 定义栈结构 typedef struct {char data[1000]; // 栈数据int top; // 栈顶指针 } Stack;// 初始化栈 void initStack(Stack *stack) {stack-top -1; }// 压栈 void push(Stack *stack, char c) {stack-data[stack-top] c; }// 弹栈 char pop(Stack *stack) {return stack-data[stack-top--]; }// 获取栈顶元素 char top(Stack *stack) {return stack-data[stack-top]; }// 判断栈是否为空 bool isEmpty(Stack *stack) {return stack-top -1; }// 算法入口 bool getResult(char *s) {// 去除非括号字符char filtered[1000];int j 0;for (int i 0; s[i] ! \0; i) {if (s[i] ( || s[i] ) || s[i] [ || s[i] ] || s[i] { || s[i] }) {filtered[j] s[i]; // 只保留括号字符}}filtered[j] \0; // 字符串结束符// 定义括号映射关系char map[256] {0};map[)] (;map[]] [;map[}] {;// 使用栈来检查括号是否匹配Stack stack;initStack(stack);// 遍历处理后的字符串for (int i 0; filtered[i] ! \0; i) {char c filtered[i];// 如果栈不为空且当前字符是右括号if (!isEmpty(stack) map[c] ! 0) {// 检查栈顶元素是否是对应的左括号if (top(stack) map[c]) {pop(stack); // 匹配成功弹出栈顶元素continue;} else {return false; // 匹配失败返回 false}}// 将当前字符压入栈中push(stack, c);}// 如果栈为空说明所有括号都匹配成功return isEmpty(stack); }int main() {// 输入获取char s[1000];fgets(s, sizeof(s), stdin); // 读取一行输入// 算法调用printf(%s\n, getResult(s) ? true : false); // 输出结果return 0; }C 语言代码逻辑讲解 1. 输入获取 使用 fgets(s, sizeof(s), stdin) 从控制台读取一行输入并将其存储在字符数组 s 中。 2. 算法入口 步骤 1去除非括号字符。 遍历字符串 s只保留括号字符(, ), [, ], {, }。将过滤后的字符存储在 filtered 字符数组中。 步骤 2定义括号映射关系 map。 使用字符数组 map 存储右括号和左括号的对应关系。 步骤 3使用栈 stack 来检查括号是否匹配。 遍历处理后的字符串 filtered 如果当前字符是右括号检查栈顶元素是否是对应的左括号。 如果匹配成功弹出栈顶元素。如果匹配失败返回 false。 如果当前字符是左括号直接压入栈中。 步骤 4遍历结束后检查栈是否为空。 如果栈为空说明所有括号都匹配成功返回 true。如果栈不为空说明有未匹配的括号返回 false。 3. 算法调用 调用 getResult(s) 方法处理输入并输出结果true 或 false。 总结 功能检查输入字符串中的括号是否匹配。核心逻辑 去除非括号字符。使用栈检查括号是否匹配。 适用场景需要检查括号匹配的场景例如代码语法检查。注意事项 输入字符串可能包含非括号字符需要先去除。栈的使用是解决括号匹配问题的经典方法。 如果有其他问题欢迎随时提问
http://www.hkea.cn/news/14439356/

相关文章:

  • 西部数码网站管理助手 提权wordpress迁移容易
  • Wordpress网站开发收费三只松鼠建设网站前的市场分析
  • wordpress 主题 建站服装厂家
  • 网站建好后广告是不是需要软件开发模型有哪些各有什么特点
  • 网站更换ip地址网站显示数据
  • 橙色网站欣赏wordpress开启用户激活验证失败
  • 如何做自己的淘宝优惠券网站网站建设与维护新的体会
  • 南充市建设局官方网站搜索引擎简称seo
  • 怎样自己创造网站好看的html代码
  • 网站需求分析怎么做济源网站建设费用
  • 找人做公司网站锡盟建设局网站
  • 如何做网站关键字优化建设工程设计备案网站
  • 新开的公司建立网站有哪些要做的中国采购网官方网站
  • 中国建筑设计作品网站公司网站建设全包
  • 男女做暖暖的试看网站酥酥影视怎么查网站备案进度
  • 做明信片的网站西安网站建设行业
  • 视差网站广州网站建设比较好的公司
  • 照片展示网站模板个人网站有哪些
  • 企业网站 更新 seo魏县做网站
  • 自己做的网站怎么添加文档珠峰网站建设
  • 西宁微网站建设网站建设公司宣传文案
  • 网站推广优化外包便宜win 2012网站建设
  • 高权重网站收录问题扁平化网站设计方案
  • 珠海商城网站制作网站开发方案书博客
  • 请别人做网站注意事项手机版网站建设价格
  • 中考复读学校网站怎么做佛山网站设计怎么做
  • 品牌网站建设报价方案百度seo优化技术
  • 网站运营包括哪些内容商店软件下载
  • 广州哪里有做公司网站 什么价有没有手机可以看的网站免费的
  • 建设网站首页应该采用网站做排行多少费用