C++ 检查大括号是否匹配

2024-01-12

我被要求作为一项额外的编程挑战,看看大括号是否在随机字符串或字符中匹配,如下所示:{1+1} 将返回 1,而 {1+1}) 将返回 0。 这是我到目前为止所拥有的,但它似乎没有做任何事情。任何帮助都会很棒吗?谢谢

//bonus.cpp
#include <iostream>
#include <string>
#include <queue>
#include <stack>

using namespace std;

int checkBraces (string s)
{
    //int myLength = s.length();
    std::stack<int> stack;
    char d;

    for (int i = 0; i < s.length(); i++)
    {
        char c = s[i];

        if (c == '(')
        {
            stack.push(c);
        }
        else if (c == '[') 
        {
            stack.push(c);
        }
        else if (c == '{')
        {
            stack.push(c);
        }

        else if (c == ')')
        {
            if (stack.empty())
            {
                return false;
            }
            else
            {
                d = stack.top();
                stack.pop();
                if (d != '(')
                {
                    return false;
                }
            }
        }

        else if (c == ']')
        {
            if (stack.empty())
            {
                return false;
            }
            else
            {
                d = stack.top();
                stack.pop();
                if (d != '[')
                {
                    return false;
                }
            }
        }
        else if (c == '}')
        {
            if (stack.empty())
            {
                return false;
            }
            else
            {
                d = stack.top();
                stack.pop();
                if (d != '{')
                {
                    return false;
                }
            }
        }
    }

    if (stack.empty()) return true;
    else return false;

}


int main()
{
    cout << "This program checks brace ([{}]) matching in a string." << endl;

    checkBraces ("{1+1}");

}

是什么让你认为它没有任何作用?确实如此。它检查大括号,但你没有对返回做任何事情checkBraces,顺便说一句,应该返回一个bool,不是一个int.

您的意思可能是:

if (checkBraces ("{1+1}"))
   cout << "matching";
else
   cout << "not matching";

专家提示:学习如何使用调试器。在开始编写“hello world”之外的任何内容之前,您应该学习如何调试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 检查大括号是否匹配 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 如何在Linux shell脚本中更改文件扩展名?

    我发现了一些在类似情况下执行此操作的示例 但这是我编写的唯一除了逐字运行命令之外执行任何操作的 shell 脚本 因此我正在努力将这些示例应用到我自己的情况中 并且需要一些手工操作持有 我只是想从 MP4 中批量抓取音频 该脚本的工作原理
  • JavaScript:避免硬编码键码[重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript event keyCode 常量 https stackoverflow com questions 1465374 javascript event keycode const
  • 制作自定义类 IQueryable

    我一直在使用 VS2010 的 TFS API 并且必须查询 FieldCollection 我发现 LINQ 不支持它 所以我想创建一个自定义类以使 Field 和 FieldCollection 可通过 LINQ 查询 所以我找到了一个
  • SELECT WHERE ...数百个条件

    有没有一种优雅的方法来做到这一点 SELECT Cols from MyTable WHERE zip 90210 OR zip 23310 OR zip 74245 OR zip 77427 OR zip 18817 OR zip 945
  • 在 F# 中,如何将类型名称作为函数参数传递?

    我想传递一个类型名称 例如int or string 甚至用户定义类型的名称 作为函数参数 目前我正在做以下事情 type IntegerOrIntegerList Integer of int IntegerList of int lis
  • 加载所有引用的程序集 .NET,即使未在代码中显式使用

    我们有一个使用 Autofac 的 Windows 服务 当我们尝试加载引用的程序集时 并非所有程序集都被列为我们在应用程序中任何地方都没有使用的某些包含对象 但我们需要包含接口实现 以下方法加载程序集 private IEnumerabl
  • 有没有办法在运行时检测 iOS 上的 VFP/NEON/Thumb/...?

    因此 通过查询就可以很容易地找出 iOS 设备运行的 CPU 类型sysctlbyname hw cpusubtype 但似乎没有明显的方法来弄清楚 CPU 实际具有哪些功能 想想 VFP NEON Thumb 有人能想办法做到这一点吗 基
  • 对“pthread_key_create”的未定义引用(链接器错误)

    我从这里下载了 gtest 1 7 0 源代码 https code google com p googletest downloads list https code google com p googletest downloads l
  • Mac OS X 有图形化的“sudo”吗?

    我正在用 Java 设计一个小软件 我不知道我正在做的事情的术语 定义 但我正在将命令从 Java 提示到终端 像这样的事情 Process process Runtime getRuntime exec command 我以前在 Linu
  • jQuery Mobile:对所有页面使用相同的页眉页脚

    我正在尝试实现一些代码 这些代码将在我的所有网页上创建页眉和页脚 而不是对它们进行硬编码 我试过这个 我在我的 主页 中有这个 我只是将我想要的标题包装在 div 中 div div h1 Title h1 div div 然后在其他页面中
  • VS2012 如何关闭编辑器选项卡着色?

    我努力阅读 Visual Studio 2012 源代码编辑器中的选项卡 我什至不明白不同颜色代表什么意思 它们看起来完全是随机的 黑底棕色或黑底蓝 谁选呢 所以我想关闭选项卡的颜色并恢复为白底黑字或浅灰色 我看过 选项 gt gt 环境
  • 按使用 Rails 3 的儿童数量过滤

    我想使用 Rails 3 和单个查询来选择具有一个或多个评论的帖子 我正在尝试这样的事情 Post includes comments where count comments id gt 0 但是我收到这个错误 ActiveRecord
  • 您的规范源均不包含满足依赖项的规范:Firebase (~> 6.33.0)、Firebase (= 6.33.0、~> 6.33.0)

    我正在将一些 Firebase SDK 实现到我的 pod 中 但我在对它们进行版本控制时遇到问题 我想设置 Firebase 6 33 我确实检查了这个版本的 pod 规格并根据该规格更新了我的 pod pod Firebase gt 6
  • Web 配置错误:无法识别属性“xmlns:xdt”。请注意,属性名称区分大小写

    我正在尝试将应用程序部署到 AppHarbor 并按照他们有关如何修改我的 web config 的说明进行操作 因此它使用他们的 auf Sql 服务器实例 运行解决方案后 我收到主题中提到的错误 Unrecognized attribu
  • 接受表单元素作为方法参数?

    我正在编写一个方法 它将截取传递的表单元素的屏幕截图并将其打印出来 我面临一些挑战 我希望能够使这个方法足够通用 以接受几乎任何类型的表单元素 我将 元素 参数设置为 对象 类型 我想我还需要传递一个 类型 参数 或者有没有办法弄清楚对象传
  • telerik radGrid - 在排序/分页/过滤器上保留客户端状态

    即使在这个阿贾克斯例子 http demos telerik com aspnet ajax grid examples hierarchy nestedviewtemplate defaultcs aspx我真的很喜欢它的外观 当顶层网格
  • 如何通过 from_avro 标准函数使用 Confluence Schema Registry? [复制]

    这个问题在这里已经有答案了 My Kafka 和 Schema Registry 基于 Confluence Community Platform 5 2 2 My Spark 版本为 2 4 4 我使用以下命令启动 Spark REPL
  • 使用 getter/setter 与“告诉,不要问”?

    只讲原则 不问原则here http pragprog com articles tell dont ask当我使用 getter 或 setter 时 经常会粘贴到我身上 人们告诉我不要使用它们 该网站清楚地解释了我应该做什么和不应该做什
  • 如何通过深度链接传递数据?

    我的应用程序中有一个报价列表 每个列表项上都有一个共享按钮 当任何用户单击共享链接时 我正在使用深层链接打开我的应用程序的报价详细信息活动 我处于以下情况当有人点击链接时 我的详细信息页面活动就会被触发 但是我怎么知道 当有人点击共享深层链
  • C++ 检查大括号是否匹配

    我被要求作为一项额外的编程挑战 看看大括号是否在随机字符串或字符中匹配 如下所示 1 1 将返回 1 而 1 1 将返回 0 这是我到目前为止所拥有的 但它似乎没有做任何事情 任何帮助都会很棒吗 谢谢 bonus cpp include