融资计划书哈尔滨seo排名优化免费咨询
2026/2/25 14:59:23 网站建设 项目流程
融资计划书,哈尔滨seo排名优化免费咨询,企业邮箱排名,网站开发与设计课程时间1. 题目 原题链接 给你一个只包含三种字符的字符串#xff0c;支持的字符类型分别是 ‘(’、‘)’ 和 ‘*’。请你检验这个字符串是否为有效字符串#xff0c;如果是 有效 字符串返回 true 。 有效 字符串符合如下规则#xff1a; 任何左括号 ‘(’ 必须有相应的右括号 …1. 题目原题链接给你一个只包含三种字符的字符串支持的字符类型分别是 ‘(’、‘)’ 和 ‘*’。请你检验这个字符串是否为有效字符串如果是 有效 字符串返回 true 。有效 字符串符合如下规则任何左括号 ‘(’ 必须有相应的右括号 ‘)’。任何右括号 ‘)’ 必须有相应的左括号 ‘(’ 。左括号 ‘(’ 必须在对应的右括号之前 ‘)’。‘*’ 可以被视为单个右括号 ‘)’ 或单个左括号 ‘(’ 或一个空字符串 “”。示例 1输入s “()”输出true示例 2输入s “(*)”输出true示例 3输入s “(*))”输出true提示1 s.length 100s[i] 为 ‘(’、‘)’ 或 ‘*’2. 题解2.1 解法1: 两个栈两个栈记录目前为止不能匹配的字符也就是*和(每次出现右括号我们就应该去两个栈匹配可以匹配的左括号。而*可以作为任何括号也可以作为空字符串所以我们应该优先用左括号匹配所以我们出栈的策略如下遇到左括号直接进栈记录括号的位置。遇到星号直接进栈记录星号的位置。遇到右括号a: 左括号栈里有元素直接出栈。b: 左括号栈里无元素*栈里有元素直接出栈。无元素的话就已经匹配失败了。如果遍历完数组的话我们可能会发现左括号栈里还有结余元素。如果是20题的情况已经失败了。但现在我们可能还有一些星号可以作为右括号用所以我们进行下面的匹配操作对左括号栈逐一出栈然后去看此时星号栈的栈顶如果栈顶元素的位置大于左括号栈顶元素的位置说明星号在括号的右侧可以匹配。否则不可。classSolution{publicbooleancheckValidString(Strings){DequeIntegerstarnewLinkedList();DequeIntegerleftnewLinkedList();for(inti0;is.length();i){charcs.charAt(i);if(c(){left.offerLast(i);}elseif(c*){star.offerLast(i);}elseif(!left.isEmpty()){left.pollLast();}elseif(!star.isEmpty()){star.pollLast();}else{returnfalse;}}while(!left.isEmpty()!star.isEmpty()){if(left.pollLast()star.pollLast()){returnfalse;}}returnleft.isEmpty();}}参考:【微扰理论】肯定是栈呀

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询