Python 中的括号平衡 | Python 中的平衡括号问题2024 年 8 月 29 日 | 5 分钟阅读 在本教程中,我们将学习如何在 Python 中检查给定括号的平衡。这是一个基本的面试问题,您被要求查找给定的字符串(括号)是否平衡。这是产品型公司中经常问到的技术面试问题。一个字符串可以包含不同类型的括号,例如 ()、[]、{}。 在计算机科学中,括号主要用于简化表达式。如果每个左括号都有一个右括号,则该括号被认为是平衡的。换句话说,括号应该成对出现;否则,它们是不平衡的。 让我们来理解有效的括号问题以及如何使用 Python 解决这个问题。 什么是平衡括号问题?首先,我们以包含字符 **(、)、{、}、[ 和 ]** 的字符串作为输入,以检查给定字符串是否有效。 如果输入字符串遵循以下约束,则该字符串有效:
让我们来理解解决这个问题的思路。 检查有效括号我们可以使用以下方法解决这个问题。 方法一:使用暴力破解法在暴力破解算法中,我们可以使用条件语句、递归和循环来匹配括号。如果括号平衡,则返回 true,否则返回 false。 让我们看下面的代码片段。 代码 - 输出 Is {[()]}} valid ? : False Is {[()]}{]{}} valid ? : False 解释 - 在上面的代码中,我们使用了 while 循环来检查给定的序列。while 循环将执行,直到给定的字符串变空或没有元素为止。首先,我们检查是否出现 () 括号,然后替换为空字符串,接着检查 [] 括号并替换为空字符串,对其他括号执行相同的操作。如果没有出现一对括号,则返回 True,否则返回 False。 让我们尝试用不同的方法来解决这个问题。 方法二:使用 For 循环在这个程序中,我们将使用 for 循环和计数器值来检查给定的括号字符串是否有效。 让我们来理解以下代码。 示例 - 输出 Enter a string of brackets: {[()]} Given string is balanced : True Enter a string of brackets: {[()]}] Given string is balanced : False 解释 - 在上面的代码中,我们初始化了一个计数变量为零。在 if 条件中,如果给定的字符串中有开括号,则计数加一;如果对应的有闭括号,则计数减一。最后,我们检查计数是否等于零,然后返回 True,否则返回 False。 方法三:使用堆栈堆栈是一种线性数据结构,以 LIFO(后进先出)的方式存储数据。我们遍历字符串并将开括号压入堆栈。我们持续进行此过程,直到所有开括号都压入堆栈,然后将指针向前移动。 当指针遇到闭括号时,检查堆栈的顶部,看它是否与开括号匹配。如果匹配,则从堆栈中弹出开括号,重复此过程直到指针访问完所有闭括号。 如果所有元素都从括号中弹出,则表示给定的字符串包含有效的括号,如果还有任何一个括号留在括号中,则给定的字符串不平衡。 示例 - 输出 The given string is balanced 时间复杂度检查括号的时间复杂度是最佳的 O(n)。其中 n 是字符串中括号的总数。由于我们需要大小为 'n' 的堆栈来存储表达式的字符,因此在给定字符串中搜索括号的每次搜索都是线性的,空间复杂度为 0(n)。 结论Python 中的括号主要不用于定义块,但在其他编程语言中起着至关重要的作用。在 Python 中,它们用于定义字典、元组、集合、列表和许多其他数据结构。面试官提出这个问题是为了测试候选人对解决问题的知识。在本教程中,我们讨论了检查给定字符串是否为有效括号的三种重要方法。我们还使用 Python 代码实现了解决方案。如果您正在为产品型公司寻找高薪工作,强烈建议您练习此类问题。 |
在本教程中,我们将学习如何使用 Python 代码生成漂亮的 QR 码。我们还将讨论更改 QR 码的大小、设置 QR 码的边框格式、旋转、创建动画 QR 码。正如我们在日常工作中看到的……
7 分钟阅读
在本教程中,我们将编写一个程序,用于处理具有多个输入的Python字典。在下面的示例中,我们有一个包含三个输入变量x、y和z的方程,我们希望存储不同输入三元组的方程值。我们可以...
阅读 3 分钟
映射是 Python 中的一种数据结构,它将一组值映射到另一组值。Python 字典是映射中最常用的。每个值都分配有一个键,可以使用该键来查看该值。当发生 KeyError 时...
11 分钟阅读
我们可以通过多种方式对Python列表进行排序。有各种算法被设计用来对列表进行排序。对一维Python列表进行排序非常直接。它需要直接应用一种可用的算法。然而,给定一个嵌套的Python列表,基于什么...
阅读 6 分钟
在下面的教程中,我们将学习如何借助 Python 编程语言的 Tkinter、OS 和 Shutil 模块构建一个基于 GUI 的文件浏览器。这个项目适合初学者,我们所需要的只是与所有这些模块相关的一些简要知识...
34 分钟阅读
Fizz-Buzz 是用于解释 Fizz、Buzz 和 Fizz_Buzz 组中数字除法的编程任务。假设用户有一个数字“n”,并且他们需要显示从 1 到 n 的所有数字的字符串表示。但是有一些...
阅读 4 分钟
Python 等编程语言提供了多种开发图形用户界面(GUI)的选项。在这些用于 GUI 的方法中,Tkinter 是最广泛使用的库。在下面的教程中,我们将创建一个 GUI 应用程序来计算百分位数……
阅读 17 分钟
简介 return 用于从函数返回一个值。用户只能在函数中使用 return 语句。它不能在 Python 函数之外使用。一个 return 语句包括 return 关键字和将在执行后返回的值...
阅读 3 分钟
Bokeh 是一个 Python 库,用于通过高性能交互式图表和绘图进行数据可视化。它使用 HTML 和 JavaScript 语言创建绘图。bokeh 库的输出可以在多个平台(如浏览器、HTML、服务器和笔记本)上生成。它...
5 分钟阅读
在本教程中,我们将讨论如何在 Matplotlib 中更改图例位置。首先,我们将讨论一些基本概念:Matplotlib 是一个用 Python 编写的强大的可视化库,用于在二维数组中绘制图表。它是在 2002 年由 John Hunter 开发的...
阅读 2 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India