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

网站开发员名称是什么网站服务器管理系统

网站开发员名称是什么,网站服务器管理系统,cms仿站,电商网站运营方案有效的括号 题目思路及实现方式一#xff1a;栈#xff08;推荐#xff09;思路代码实现Java版本C版本(由于C语言需要自己实现栈较为繁琐#xff0c;此处使用C)Python3版本 复杂度分析 方式二#xff1a;递归法思路代码实现Java版本C语言版本Python3版本 复杂度分析 总结相… 有效的括号 题目思路及实现方式一栈推荐思路代码实现Java版本C版本(由于C语言需要自己实现栈较为繁琐此处使用C)Python3版本 复杂度分析 方式二递归法思路代码实现Java版本C语言版本Python3版本 复杂度分析 总结相似题目 标签栈|递归 题目 给定一个只包括 (){}[] 的字符串 s 判断字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 示例 1输入s () 输出true 示例 2输入s ()[]{} 输出true 示例 3输入s (] 输出false 提示1 s.length 104 s 仅由括号 ()[]{} 组成原题LeetCode 20 有效的括号 思路及实现 方式一栈推荐 思路 判断括号的有效性可以使用「栈」这一数据结构来解决。 代码实现 Java版本 import java.util.Stack;// leetcode submit region begin(Prohibit modification and deletion) class Solution {public boolean isValid(String s) {StackCharacter stack new Stack(); // 创建一个栈用于存储左括号字符for (int i 0; i s.length(); i) {char c s.charAt(i);if (c ( || c [ || c {) {stack.push(c); // 如果是左括号字符将其压入栈中} else {if (stack.isEmpty()) {return false; // 如果栈为空说明缺少左括号返回false}char top stack.pop(); // 弹出栈顶元素if (c ) top ! () {return false; // 如果当前字符是右括号且与栈顶元素不匹配返回false}if (c ] top ! [) {return false;}if (c } top ! {) {return false;}}}return stack.isEmpty(); // 最后判断栈是否为空如果为空说明每个左括号都有匹配的右括号则返回true否则返回false} } // leetcode submit region end(Prohibit modification and deletion) 说明 使用栈来判断给定的字符串中的括号是否匹配。先创建一个空栈然后遍历字符串中的每个字符。如果是左括号字符则压入栈中如果是右括号字符则与栈顶元素进行匹配。匹配成功则继续遍历匹配失败则返回false。最后判断栈是否为空如果为空则说明所有的括号都被匹配返回true否则说明还有未匹配的括号返回false C版本(由于C语言需要自己实现栈较为繁琐此处使用C) #include iostream #include stack #include stringusing namespace std;bool isValid(string s) {stackchar stk; // 创建一个栈用于存储左括号字符for (char c : s) {if (c ( || c [ || c {) {stk.push(c); // 如果是左括号字符将其压入栈中} else {if (stk.empty()) {return false; // 如果栈为空说明缺少左括号返回false}char top stk.top(); /* 获取栈顶元素 */stk.pop(); // 弹出栈顶元素if (c ) top ! () {return false; // 如果当前字符是右括号且与栈顶元素不匹配返回false}if (c ] top ! [) {return false;}if (c } top ! {) {return false;}}}return stk.empty(); // 最后判断栈是否为空如果为空说明每个左括号都有匹配的右括号则返回true否则返回false }说明 使用C的标准库来实现栈判断给定的字符串中的括号是否匹配。首先创建一个stack用于存储左括号字符。然后遍历字符串中的每个字符如果是左括号字符则将其压入栈中如果是右括号字符则与栈顶元素进行匹配。匹配成功则继续遍历匹配失败则返回false。最后判断栈是否为空如果为空则说明所有的括号都被匹配返回true否则说明还有未匹配的括号返回false。 Python3版本 class Solution:def isValid(self, s: str) - bool:stack [] # 创建一个栈用于存储左括号字符brackets {(: ), [: ], {: }}for char in s:if char in brackets.keys(): # 如果是左括号字符将其压入栈中stack.append(char)elif char in brackets.values(): # 如果是右括号字符if not stack: # 如果栈为空说明缺少左括号返回Falsereturn Falsetop stack.pop() # 弹出栈顶元素if char ! brackets[top]: # 如果当前字符与栈顶元素不匹配返回Falsereturn Falsereturn len(stack) 0 # 判断栈是否为空为空说明每个左括号都有匹配的右括号说明 创建一个列表作为栈来判断给定的字符串中的括号是否匹配。首先定义了一个字典brackets用来存储左括号和右括号的对应关系。然后遍历字符串中的每个字符如果是左括号字符则将其压入栈中如果是右括号字符则和栈顶元素进行匹配。匹配成功则继续遍历匹配失败则返回False。最后判断栈是否为空如果为空则说明所有的括号都被匹配返回True否则说明还有未匹配的括号返回False 复杂度分析 时间复杂度O(n)其中 n 是字符串 s 的长度。空间复杂度O(n)其中n为字符串的长度。在最坏情况下所有的字符都是左括号需要将其全部入栈占用了O(n) 的空间。 方式二递归法 思路 递归法解决括号有效性问题的思路是从字符串的起始位置开始不断地递归判断子字符串的有效性 代码实现 Java版本 public class Solution {public boolean isValid(String s) {// 调用递归辅助函数进行判断return isValidHelper(s, 0, s.length() - 1);}private boolean isValidHelper(String s, int start, int end) {// base case: 当起始位置等于结束位置时返回该位置字符是否为左括号或右括号if (start end) {return s.charAt(start) ( || s.charAt(start) ) ||s.charAt(start) [ || s.charAt(start) ] ||s.charAt(start) { || s.charAt(start) };}// 判断字符串两侧是否匹配以及去掉最外侧字符后的子字符串是否有效if (s.charAt(start) () {if (s.charAt(end) ! )) {return false;}} else if (s.charAt(start) [) {if (s.charAt(end) ! ]) {return false;}} else if (s.charAt(start) {) {if (s.charAt(end) ! }) {return false;}} else {// 如果初始字符不是左括号直接递归调用处理去掉首位字符的子字符串return isValidHelper(s, start 1, end - 1);}// 递归判断去掉左右括号后的子字符串是否有效return isValidHelper(s, start 1, end - 1);} } 说明 isValidHelper 方法作为递归辅助函数用于实现递归逻辑。isValid 方法则是调用递归辅助函数并返回结果 C语言版本 #include stdbool.h // 包含 bool 类型定义的头文件bool isValidHelper(char* s, int start, int end) {// base case: 当起始位置等于结束位置时返回该位置字符是否为左括号或右括号if (start end) {return s[start] ( || s[start] ) ||s[start] [ || s[start] ] ||s[start] { || s[start] };}// 判断字符串两侧是否匹配以及去掉最外侧字符后的子字符串是否有效if (s[start] () {if (s[end] ! )) {return false;}} else if (s[start] [) {if (s[end] ! ]) {return false;}} else if (s[start] {) {if (s[end] ! }) {return false;}} else {// 如果初始字符不是左括号直接递归调用处理去掉首位字符的子字符串return isValidHelper(s, start 1, end - 1);}// 递归判断去掉左右括号后的子字符串是否有效return isValidHelper(s, start 1, end - 1); }bool isValid(char* s) {// 调用递归辅助函数进行判断return isValidHelper(s, 0, strlen(s) - 1); } 说明 通过递归方式来判断给定的字符串 “s” 是否有效。isValidHelper 函数作为递归辅助函数用于实现递归逻辑。isValid 函数则是调用递归辅助函数并返回结果。需要注意的是在C语言中需要引入 stdbool.h 头文件来使用 bool 类型 Python3版本 def isValid(s: str) - bool:def isValidHelper(s: str, start: int, end: int) - bool:# Base case: 当起始位置等于结束位置时返回该位置字符是否为左括号或右括号if start end:return s[start] ( or s[start] ) or s[start] [ or s[start] ] or s[start] { or s[start] }# 判断字符串两侧是否匹配以及去掉最外侧字符后的子字符串是否有效if s[start] (:if s[end] ! ):return Falseelif s[start] [:if s[end] ! ]:return Falseelif s[start] {:if s[end] ! }:return Falseelse:return isValidHelper(s, start 1, end - 1)# 递归判断去掉左右括号后的子字符串是否有效return isValidHelper(s, start 1, end - 1)return isValidHelper(s, 0, len(s) - 1) 说明 通过递归方式判断给定字符串 “s” 是否有效。如果有效返回 True如果无效返回 False 复杂度分析 假设输入字符串的长度为 n。 时间复杂度 O(n) 在最坏情况下需要递归访问字符串的每个字符即递归的深度为字符串的长度 n。每次递归操作的时间复杂度为 O(1)。 因此递归法的时间复杂度为 O(n)。空间复杂度 O(n) 在递归的过程中除了原始的字符串外没有使用额外的空间。递归调用的栈空间的最大深度为 n/2平均情况下为 n/4即最多有 n/2 个递归调用帧。 因此递归法的空间复杂度为 O(n)。 总结 对比点递归法栈解法思路直观性直观相对复杂递归深度问题可能存在递归深度过大导致栈溢出的风险无递归深度限制利用系统调用栈是否时间复杂度O(n)O(n)空间复杂度O(n)O(n)实现复杂性相对简单相对复杂额外空间需求无有 相似题目 题目链接难度有效的括号LeetCode-20简单最长有效括号LeetCode-32困难删除无效的括号LeetCode-301困难有效的括号字符串LeetCode-678中等括号的分数LeetCode-856中等
http://www.pierceye.com/news/861878/

相关文章:

  • 广州 网站开发 公司怎样做一个公众号
  • 注册网站域名需要什么河南网站建设定制
  • 白种女人做爰网站网站建设新闻动态
  • 360百度网站怎么做徐州企业建站模板
  • 宁波做公司网站的公司wordpress 说说 插件
  • 做毕业设计网站教程网页设计培训机构多少钱
  • 展览馆网站建设方案书wordpress 搬家 sae
  • 网站建设服务开税率多少的票重庆公积金门户网站
  • 网站推广的策略有哪些免费创建个人网站申请
  • 网站建设合同制苏中建设集团网站
  • 如何用织梦程序制作多个页面网站免费域名解析网站建设
  • 安徽省建筑人员信息网广州百度seo优化排名
  • 北海网站建设培训机构专业
  • 江苏艺居建设有限公司网站企业营销网站开发建设专家
  • 莱芜网站优化排名西安工程建设工程信息网
  • 二手网站建设的策划php做网站都需要学什么软件
  • 作品集的个人网站怎么做抖音代运营怎么样呢
  • 电子商务网页设计与网站建设论文在线设计培训
  • 做旅游网站的项目背景软件开发手册
  • 宁波品牌网站设计app外包接活
  • 清远市住房和城乡建设局门户网站图片软件制作工具
  • 宝马itms做课网站网站开发群
  • 网站开发工作协议书范本谷歌优化软件
  • 什么网站都能进的浏览器企业融资方案
  • 网站建设公司领导致辞自己可以开发一个软件吗
  • 高端网站设计平台专门做二手书网站或app
  • 系网站建设工作总结大庆建设网站表格下载
  • 免费建站网站seo长春专业网站制作
  • 做网站公司哪家正规公司网站如何更改内容
  • 广州黄埔区建设局网站局wordpress怎么看访问量