专业公司网站 南通wordpress 不显示标题
web/
2025/9/25 18:04:54/
文章来源:
专业公司网站 南通,wordpress 不显示标题,安庆做网站电话,wordpress菜单怎么用这是较容易的编码任务之一#xff0c;但是您仍然可以在一些初步的技术筛选中达到要求。 问题看起来像这样#xff1a; 给定仅包含字符( #xff0c; ) #xff0c; { #xff0c; } #xff0c; [和]的字符串#xff0c;请确定输入字符串是否有效。 括号必须以正确的顺… 这是较容易的编码任务之一但是您仍然可以在一些初步的技术筛选中达到要求。 问题看起来像这样 给定仅包含字符( ) { } [和]的字符串请确定输入字符串是否有效。 括号必须以正确的顺序闭合 ()和()[]{}均有效而(]和([)]则无效。 描述取自Leetcodec 。 您如何解决 我们一直在使用这项任务进行技术筛选。 有趣的是有多少人真的不知道该如何处理请注意这是Leetcode上的“轻松”类别。 有些人尝试使用正则表达式。 有些人试图想出一种蛮力解决方案遍历字符串并计算开括号和闭括号。 但是如果您考虑一下您将理解两者都不足以。 例如如何在[]最简单的情况下计数帮助 您应该想到的解决方案是stack 但是如果您从未接受过解决编码问题的培训则可能不会。 为什么要堆叠 好吧因为仅当您看到闭合的括号时才可以检查这对括号或括号的完整性 但这意味着打开的那个应该放在某个地方等待并在某些数据结构之上进行检查。 允许LIFO访问的结构是一个堆栈 。 碰巧我们在Java中有一个现成的Stack类 。 那么简单的解决方案如何 基本思想是您开始遍历字符串。 如果符号是打开符号之一则将其推入堆栈。 如果即将关闭您可以查看堆栈看看是否匹配。 如果是则将其从堆栈中弹出。 如果堆栈最后为空则返回true。 import java.util.*;public class Groups{private static final ListCharacter OPEN Arrays.asList((, {, [);private static final ListCharacter CLOSE Arrays.asList(), }, ]);public static boolean groupCheck(String s){if (s null || s.length() 0) {return true;}StackCharacter stack new Stack();for (int i 0; i s.length(); i) {char current s.charAt(i);if (isOpen(current)) {stack.push(current);} else {if (stack.isEmpty()) {return false;}char prev stack.peek();if (isMatch(prev, current)) {stack.pop();}}}return stack.isEmpty();}private static boolean isOpen(char c) {return OPEN.contains(c);}private static boolean isClose(char c) {return CLOSE.contains(c);}private static boolean isMatch(char prev, char next) {return isOpen(prev) (OPEN.indexOf(prev) CLOSE.indexOf(next));}} 还有其他解决方法吗 如果您不敢想到该怎么办 与往常一样有多种方法可以解决问题。 让我们看这个例子 []{} 。 让我们尝试替换正确匹配的对 “[]] {}”。replace“ []”“”“{}”。replace“”“”“ {}”。replace“ {} ”“”“” 因此我们可以循环遍历字符串用空字符串替换“ {}”“”和“ []”。 当结果为空时表示所有对都匹配。 如果没有变空怎么办 我们如何摆脱周期 好吧我们需要检查一轮替换后字符串的长度是否已更改。 如果还没有那么我们就破产了。 public class Groups{public static boolean groupCheck(String s) {int len;do {len s.length();s s.replace((), );s s.replace({}, );s s.replace([], );} while (len ! s.length());return s.length() 0;}
} 看起来更好。 简单易读但实际上是否更好 我会说不不是。 为什么 好吧因为String类是不可变的 因此每次执行s.replace时我们都会在堆上创建一个新的字符串对象。 那么如何最好地做到这一点呢 我们可以使用StringBuilder类重写代码吗 好吧不是直接的因为它没有replaceAll方法。 您必须使用现有的replace方法自己编写。 Apache Commons库中有一个StrBuilder类它确实具有此方法但它不是标准的Java类您必须添加一个依赖项。 因此即使这个简单的任务也可以给您一些思考。 但是对于面试任何解决方案都可以。 如果堆栈不是您脑海中最先想到的那么您可以不做任何事情。 翻译自: https://www.javacodegeeks.com/2017/02/interview-questions-verify-braces.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81751.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!