【编程题】合法括号的判断

合法括号的判断—难度:⭐⭐

image-20231016104134009

我的答案:错误

class Parenthesis {
  public:
    bool chkParenthesis(string A, int n) {
// write code here
        if (n % 2 != 0) {
            return false;
        }
        stack<char> st;
        auto ch = A.begin();
// cout<<"hello?"<<endl<<*(A.begin())<<endl;
        A.push_back(' ');
        while (ch < A.end()) {
            if (*ch != '(' && *ch != ')') {
                return false;
            }
            if (*ch == '(') {
//cout<<*ch<<endl;
                while (*ch == '(') {
                    st.push(*ch);
                    ch++;
                }
                if (*ch == ')') {
                    while (*ch == ')') {
                        st.pop();
                        ch++;
                    }
                } else return false;
            } else {
                while (*ch == '(') {
                    st.push(*ch);
                    ch++;
                }
                if (*ch == ')') {
                    while (*ch == ')') {
                        st.pop();
                        ch++;
                    }
                } else return false;
            }
        }
        if (!st.empty()) {
            return true;
        }
        return false;
    }
};

错误点

  • 解题思路正确,若匹配到左扩号,则入栈,若一直是左括号就一直入栈,若遇到右括号就弹栈抵消
  • 编码错误,对思路进行代码化的能力欠缺
  • 对思路进行整理后重新编码:

我的答案:修正版

class Parenthesis {
  public:
    bool chkParenthesis(string A, int n) {
// write code here
        
        if (n % 2 != 0) {
            return false;
        }
        stack<char> st;
        auto ch = A.begin();
// cout<<"hello?"<<endl<<*(A.begin())<<endl;
        
        while (ch < A.end()) {
            if (*ch == '(') {
//cout<<*ch<<endl;
                while (*ch == '(') {
                    st.push(*ch);
                    ch++;
                }
            } 
            else
            {
                return false;
            }
            if (*ch == ')') {
                    while (*ch == ')') {
                        if(!st.empty())
                        {
                            st.pop();
                            ++ch;
                        }
                        else
                        {
                            return false;
                        }
                    }
                } else return false;
            
        }
        if (st.empty()) {
            return true;
        }
        return false;
}
};

标准答案:switch语句直接搞定

class Parenthesis {
public:
    bool chkParenthesis(string A, int n) {
        // write code here
        stack<char> st;
        for(auto ch:A)
        {
            switch(ch)
            {
                case '(':
                st.push(ch);
                break;

                case ')':
                if(st.empty())
                {
                    return false;
                }
                st.pop();
                break;

                default:
                return false;
            }
        }
        return st.empty();
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/386389.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

react渲染流程是怎样的

整体流程&#xff1a; react的核心可以用uifn(state)来表示&#xff0c;更详细可以用&#xff1a; const state reconcile(update); const UI commit(state);上面的fn可以分为如下一个部分&#xff1a; Scheduler&#xff08;调度器&#xff09;&#xff1a; 调度任务&…

Netty应用(十一) 之 ChannelHandler Channel生命周期 @Sharable 心跳

目录 27.ChannelHandler总结 27.1 一些概念 27.2 到底有几个handler&#xff1f;真的只有你想的那样吗&#xff1f; 27.3 channel.writeAndFlush 和 ctx.writeAndFlush的区别 27.4 ByteBuf的创建和销毁 27.5 Channel的生命周期方法 27.5.1 handlerAdded 27.5.2 channelR…

VS Code主题设置(美化VS Code)

主题的具体效果放在了文章末尾&#xff0c;这篇文章后续也会进行更新 目录 切换整体主题&#xff08;整体主题&#xff09; 1.VS Code内置主题&#xff08;快捷键&#xff1a;CtrlK &#xff0c;CtrlT&#xff09; 1.VS Code左上角点击文件 2.选择首选项-->主题-->颜色…

理解JAVA EE设计模式

理解JAVA EE设计模式 在Web应用程序的设计和开发阶段,开发人员在开发类似的项目时可能会遇到相似的问题。每名开发人员可能会遇到的问题找出不同或相似的解决方案。但是,这导致一些时间和精力浪费在为相似的问题寻找解决方案上。因此,要啊节省时间和精力,需要记录常见问题…

【Pyhton4Delpi】学习笔记(二)安装验证篇

D12环境下安装P4D。 一、下载 Python4Delphi&#xff08;下称P4D&#xff09;: 下载地址&#xff1a;https://github.com/pyscripter/python4delphi 下载或者克隆P4D到指定的目录&#xff0c;例如&#xff1a;MDS_New&#xff0c;目录结构如下&#xff0c;P4D就是克隆下来的…

localStorage、sessionStorage、cookie区别

localStorage: localStorage 的生命周期是永久的&#xff0c;关闭页面或浏览器之后 localStorage 中的数据也不会消失。localStorage 除非主动删除数据&#xff0c;否则数据永远不会消失 sessionStorage: sessionStorage 的生命周期是仅在当前会话下有效。sessionStorage 引入…

【小沐学GIS】基于C++QT绘制三维数字地球Earth(OpenGL)

&#x1f37a;三维数字地球系列相关文章如下&#x1f37a;&#xff1a;1【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第一期2【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第二期3【小沐…

基于Spring Boot的足球青训俱乐部管理后台系统,计算机毕业设计(带源码+论文)

源码获取地址&#xff1a; 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1757420859554869250

流量嗅探详解

不少人存在这样的观点&#xff1a;只要计算机安装各种专业的安全软件&#xff0c;系统及时更 新补丁&#xff0c;密码尽可能复杂&#xff0c;那么计算机就会避免遭到入侵。当然这样的确不容易 被入侵&#xff0c;但那也只是针对传统的病毒、木马而言&#xff0c;在流量攻击面前…

2.13作业

21.c 22.b 23.b 假设&#xff0c;入&#xff1a;12345&#xff0c;出&#xff1a;54132.要出5&#xff0c;必须12345按顺序入&#xff0c;然后出5&#xff0c;依次出4321&#xff0c;想要在4之后出1是不可能实现的。 24.b10,c11,d100 25.3 ,2 …

leetcode:45.跳跃游戏二

1.解题思路&#xff1a; 用最少的步数增加覆盖范围&#xff0c;直至覆盖到终点。 2. 代码实现&#xff1a; 如果数组长度为1&#xff0c;返回0 初始化cur&#xff0c;next&#xff0c;result为0 for循环遍历数组&#xff0c;使得next指向下一步能够覆盖的最远距离&#x…

人力资源智能化管理项目(day07:员工详情)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/humanResourceIntelligentManagementProject 页面结构和路由 <template><div class"dashboard-container"><div class"app-container"><div class"edit-form">…

数学实验第三版(主编:李继成 赵小艳)课后练习答案(九)(3)

实验九&#xff1a;线性函数极值求解 练习三 1.设有三种证券 期望收益率分别为10%,15%和40%,风险分别是10%,5%和20%,假定投资总风险用最大一种投资股票的风险来度量,且同期银行存款利率为 5%,无风险,为投资者建议一种投资策略(投资比例),使其尽可能获得最大收益. clc;clear;…

【数据结构】链表OJ面试题4《返回链表入环的第一个结点》(题库+解析)

1.前言 前五题在这http://t.csdnimg.cn/UeggB 后三题在这http://t.csdnimg.cn/gbohQ 给定一个链表&#xff0c;判断链表中是否有环。http://t.csdnimg.cn/Rcdyc 记录每天的刷题&#xff0c;继续坚持&#xff01; 2.OJ题目训练 10. 给定一个链表&#xff0c;返回链表开始…

【Tauri】(3):使用Tauri1.5版本,进行桌面应用开发,在windows上搭建环境,安装node,rust环境,可以打包成功,使用vite创建应用

1&#xff0c;视频地址&#xff1a; https://www.bilibili.com/video/BV1Ny421a7nA/ 【Tauri】&#xff08;3&#xff09;&#xff1a;使用Tauri1.5版本&#xff0c;进行桌面应用开发&#xff0c;在windows上搭建环境&#xff0c;安装node&#xff0c;rust环境&#xff0c;可以…

9.【CPP】List (迭代器的模拟实现||list迭代器失效||list的模拟实现)

介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素。list与forward_…

文件压缩炸弹,想到有点后怕

今天了解到一个概念&#xff0c;压缩炸弹。 参考&#xff1a; https://juejin.cn/post/7289667869557178404 https://www.zhihu.com/zvideo/1329374649210302464 什么是压缩炸弹 压缩炸弹&#xff08;也称为压缩文件炸弹、炸弹文件&#xff09;是一种特殊的文件&#xff0c;它…

年假作业10

一、选择题 BBDBACCCAD 二、填空题 1,4,13,40 3715 358 5 2 6 1 5 4 8 2 0 2 三、编程题 1、 #include <iostream> #include<array> #include <limits> using namespace std; int main() {array<int,10> score;array<int,10>::iterat…

黑马程序员——移动Web——day01

目录&#xff1a; 平面转换 简介平移定位居中案例-双开门旋转转换原点案例-时钟多重转换缩放案例-播放特效倾斜渐变 线性渐变案例-产品展示径向渐变综合案例 导航-频道渐变按钮轮播图猜你喜欢 1.平面转换 简介 作用&#xff1a;为元素添加动态效果&#xff0c;一般与过渡配…

鸿蒙开发系列教程(十七)--路由Router

页面路由指在应用程序中实现不同页面之间的跳转和数据传递 1、页面跳转 跳转模式 router.pushUrl()&#xff1a;目标页不会替换当前页&#xff0c;而是压入页面栈。这样可以保留当前页的状态&#xff0c;并且可以通过返回键或者调用[router.back()]方法返回到当前页。router…