符号匹配

《数据结构和算法》之符号匹配性检测 一,问题描述:         在C语言中有一些符号是成对出现的,括号:(),【】,{},《》, 二,问题分析:         可能猛的看到这个题目都不知道要怎么做,但仔细分析之后可以发现可以从以下这个思路来进行解答:         1,从第一个字符开始扫描,当遇见普通字符时忽略,当遇见左符号时压入栈中;         2,当遇见右符号时就从栈中弹出栈顶符号进行匹配,如果匹配成功则 阅读详情

 class MatchTest
    {
        static void Main(string[] args)
        {
            MatchTest test = new MatchTest();
            test.BuildTest();
        }
        public void BuildTest()
        {
            //检验正确的
            Console.WriteLine();
            Console.WriteLine("检验正确的");
            Console.WriteLine(this.ValidateMatch(this.BuilderSymbolsSet(this.TestSentenceRight())));
            //检验错误的,少了一个(奇数)匹配符号
            Console.WriteLine();
            Console.WriteLine("检验错误的,少了一个(奇数)匹配符号");
            Console.WriteLine(this.ValidateMatch(this.BuilderSymbolsSet(this.TestSentenceWrong())));
            //检验错误的,少了两个(偶数)匹配符号
            Console.WriteLine();
            Console.WriteLine("检验错误的,少了两个(偶数)匹配符号");
            Console.WriteLine(this.ValidateMatch(this.BuilderSymbolsSet(this.TestSentenceWrongOther())));

            Console.ReadLine();
        }
        private string TestSentenceRight()
        {
            return "{ if( true ){ return;} }";
        }
        private string TestSentenceWrong()
        {
            return "{ if( true ) { return;} ";
        }
        private string TestSentenceWrongOther()
        {
            return "{ if( true  { return;} ";
        }
        public List<char> BuilderSymbolsSet(string sentence)
        {
            List<char> symbols = new List<char>();
            foreach (char item in sentence)
            {
                if (item == '{' ||
                    item == '}' ||
                    item == '(' ||
                    item == ')')
                {
                    symbols.Add(item);
                }
            }
            return symbols;
        }
        public bool ValidateMatch(List<char> symbols)
        {
            Stack<char> tempStack = new Stack<char>();
            if (symbols.Count == 0)
            {
                throw new FormatException("该语句没有内容");
            }

            if (symbols.Count % 2 != 0)
            {
                Console.WriteLine("在检验符号匹配时,检验到符号集的个数为奇数,所以不匹配");
                return false;
            }
            foreach (char item in symbols)
            {
                if (tempStack.Count == 0)
                {
                    //如果所加入的第一个符号不是左符号,那么在留在栈里。
                    tempStack.Push(item);
                }
                else
                {
                    char symbol = tempStack.Peek();
                    if ( (item == '}' && symbol == '{') ||
                         (item == ')' && symbol == '(') )
                    {
                        tempStack.Pop();
                    }
                    else
                    {
                        tempStack.Push(item);
                    }
                }
            }
            if (tempStack.Count == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

数据结构_符号匹配 #include #include #include #define OK 1; #define ERROR 0 #define  STACK_SIZE 100   //储存空间的初始长度 #define  STACK_INC   10   //储存空间的增加长度 typedef char Elem; typedef struct   { Elem *base;//栈低指 阅读详情

相关推荐

妙算(manifold-2G)通过网线连接笔记本实现静态ip上网

本质就是共享笔记本wifi,配置以太网静态ip,然后在工控机上连接

slender_1031的博客 903

7-17 符号配对 (20分)

请编写程序检查C语言源程序中下列符号是否配对:/与/、(与)、[与]、{与}。 输入格式: 输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。 输出格式: 首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出左符号-?。 输入样例1: void test() { int i, A[10]; for (i=0; i<10;

Qingzhx的博客 3931

2. Android_逆向的历史与发展

学完本节,希望你能够:了解 Android 逆向工程的发展历程,从早期 APK 破解到现代应用保护;入门先把这几类「在干啥」搞清楚,后面学脱壳、反反调试会顺很多。(反编译 APK 得到的类汇编代码,相当于程序的「菜谱」)就能绕过验证,到后来混淆、加固、反调试一起上,逆向难度越来越高。(第三节 什么是 CPU 指令集),帮你搞清楚「反汇编看到的那些指令」是从哪来的、和 Android 逆向有啥关系。有必要——先搞清「没加固时怎么玩」,再学脱壳和对抗,思路才顺。读起来费劲,但逻辑还在,耐心一点还能跟。

长沙火山 1390

C语言 符号配对 (20分)

符号配对(20分) 请编写程序检查C语言源程序中下列符号是否配对:/*与*/、(与)、[与]、{与}。 输入格式: 输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。 输出格式: 首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右...

偶素雾霾的博客 6564

基于传感器数据实现火灾报警预测分析

火警 系统当检测到烟雾、火灾、一氧化碳或其他与火灾有关或一般通知的紧急情况时,向人们发出警告

DT程序员的博客 722

Figma 设计稿转前端代码:Cursor 实现 UI 还原的 4 种精准映射方法

揭示 Figma 设计稿转前端代码失效的根本原因在于四层语义未对齐(像素→布局、视觉→样式、交互→行为、意图→架构),提出以语义标注为核心的结构化喂数据方法,详解通过图层命名、Description 字段和 Markdown 上下文锚点实现高精度 React 组件生成,并给出可落地的避坑指南与实测提

weixin_42545292的博客 138

符号配对(C 语言)

请编写程序检查C语言源程序中下列符号是否配对:/*与*/、(与)、[与]、{与}。 输入格式: 输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。 输出格式: 首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则...

张小艾博客 1万+

第069篇:浸入边界法进阶

浸入边界法(Immersed Boundary Method, IBM)是处理流固耦合问题的强大数值方法。本文深入介绍直接力法、反馈力法、Ghost Cell方法和多域IBM等高级技术。通过Python实现完整的IBM求解器,展示处理移动边界、弹性边界和多体相互作用的方法。浸入边界法,直接力法,反馈力法,Ghost Cell,流固耦合,移动边界,弹性边界Navier-Stokes方程添加体积力项:∂u∂t+(u⋅∇)u=−1ρ∇p+ν∇2u+f\frac{\partial \mathbf{u}}{\part

2401_87715305的博客 412

PAT 符号配对

PAT 符号配对

皓韵儿 9507

redhawk:STA timing data file解析

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?STA timing data file分为以下几个部分:• Header• Name Map• Footer这部分报告设计的基本信息,例如文件类型,设计名称,分隔符等。...

m0_61544122的博客 1155

如何使用rdma-core来实现RDMA操作

rdma-core 是一个开源项目,为远程直接内存访问(RDMA)提供用户空间的支持。它包括 RDMA 设备的驱动程序、库和工具,旨在简化 RDMA 应用的开发和部署。

嵌入式技术开发 3896

PTA 数据结构习题 7-2 符号配对 (20分)

题目 请编写程序检查C语言源程序中下列符号是否配对:/* 与 */、( 与 )、[ 与 ]、{ 与 }。 输入格式: 输入为一个C语言源程序。当读到某一行中只有一个句点和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。 输出格式: 首先,如果所有符号配对正确,则在第一行中输出,否则输出。然后在第二行中指出第一个不配对的符号(注意点):如果缺少左符号,则输出;如果缺少右符号...

l_jd_gululu的博客 1万+

【开源电机驱动】位置环控制

这是三闭环里的最后一个:位置闭环控制。如果你认真的阅读并推导了前章节,那么这一节将会很好理解。一如既往,我会使用简练的语言来描述复杂的问题。本章节主要涉及位置环的一些概念,以及控制框图。文章不会涉及具体的代码。

BadBoyHolly的博客 6095

java 匹配所有符号

通过这种方式,我们可以从用户输入中过滤掉所有的符号,从而得到一个只包含文本的字符串。通过去除符号,我们可以更好地处理和分析文本数据,提取出有意义的信息。在Java中,要匹配所有符号,可以使用正则表达式来实现。正则表达式是一种强大的模式匹配工具,可以用来检查字符串是否符合特定的模式。表示标点符号,如果你想匹配其他类型的符号(如数学符号、货币符号等),可以根据需要修改正则表达式。方法,在文本中查找下一个匹配的符号。然后,我们将匹配到的单词转换为大写,并使用。可以看到,正则表达式成功匹配到了所有的符号。

牛肉胡辣汤 1292

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

符号匹配问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 符号串匹配问题解决 前言 符号串匹配问题解决 一、基本思想 使用栈的先进后出的结构特点来实现符号匹配。当遇到左符号时即将左符号进栈,遇到右符号时取栈顶元素出栈,与右符号匹配。若匹配成功,则继续下一步匹配;若匹配不成功,则输出匹配不成功的提示信息。 二、使用步骤 具体实现代码如下: #include<iostream> #include<stack> #include<string> using nam.

qwpo135790的博客 1029

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

arcgis符号库匹配不对的原因_ArcGIS符号库自动匹配方法

ArcGIS符号自动匹配问题这几天在忙数字城市的数据入库,之前对符号库不是很了解,经过自己摸索和网上搜集资料,现在终于有些了解了。在进行ArcGIS的符号自动匹配之前,必须确定数据库里属性表的某个字段和符号库的name 一样,譬如要对居民地附属设施进行符号自动匹配,则要在“居民地附属设施”库里的属性表中有一个“YSDM”的值和符号库的编号对应,如路灯的“YSDM”的值为“38050110”,若路灯...

weixin_33640562的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

栈的简单应用—-符号匹配

java在集合框架中提供了LinkedList类对象,该类提供了一栈的操作 ,

qc Liu 的专栏 2261

ArcMap符号与符号库匹配

一、准备 1、打开ArcMap,将准备好的矢量导入,添加矢量与符号的标识属性。 二、创建符号库 1、Customize——Syle Manager…,进行符号库的创建。 2、点击Styles,新建符号库,符号库文件的后缀为.style。 3、创建完成后,由于示例矢量为面矢量,因此创建Fill Symbol。 4、创建新符号,且将新符号的名称与之前标识属性的内容一致,创建完毕后关闭窗...

flower_word的博客 7639

解决警告——有符号 无符号不匹配

解决警告——warning C4018: “&lt;”: 有符号/无符号不匹配 今天遇到这个问题,虽然不影响程序运行,但作为完美主义者,有警告总感觉不舒服,所以就查了一下解决方法: 出错代码:for(int j=0;j&lt;detector.size();j+...

reason的博客 1万+

C++用栈实现符号匹配

使用C++通过调用栈的方式实现符号匹配 #include<iostream> #include<stack> using namespace std; int main() { stack<char> ss; string test; cin>>test; int len=test.size(); int flag=1; for(i...

qq_41566923的博客 810

数据结构与算法——符号匹配(栈的用法)

完成符号匹配程序的重点:建立符号栈,并完善符号匹配的体系 class SymbolStack; class Symbol{ friend SymbolStack; private: int num; char symbol; Symbol *next; public: Symbol(int n,char s,Symbol *ptr=NULL){num=n;symbol=s;next=ptr;} S...

SMGS_vyd的博客 1765

栈的应用---编译器左右符号的语法匹配

各位程序猿在写代码的时候,使用的编译器(如VisualStudio、Eclipse)都有左右括号的自动匹配功能,如果写错了,它就会即时编译,提示错误。 那么现在,就利用栈的特点就简单实现了这一功能。 可以实现基本‘ { ’、‘ [ ’、‘(’、‘ “ ’、‘ ‘ ’、’ < ‘的左右匹配功能。 基本实现思路: 1,将代码视为一条字符串,创建栈空间 2,遍历字符串,遇到左符号->压栈 3,遇到右符号,弹栈,弹出的左符号与右进行匹配 4,执行步骤2 ,直到遍历到'\0'(字符串结

。烊了 1553

python匹配文本中全角符号的两种方法

在对文本进行处理的时候经常会遇见要对括号和标点进行匹配 常见的英文(半角)符号如( ) 直接用正则匹配即可 但是遇见全角字符(中文括号、标点),直接用正则匹配会存在问题: 因为编码一般为utf8,若直接匹配,中文括号的3字节编码会和一些中文的字节编码重复,产生意想不到的结果 若用decode转为unicode编码,则可避免产生错误结果,但也无法直接用正则匹配到 经过试验,发现最佳解决方法

xys228280987的博客 1万+

栈的应用:左右符号匹配

学习记录

BeiJiaan的博客 1145
上一篇: 十进制到八进制的转换
下一篇: .NET各大网站-编程技术网址
gisstudy111
博客等级 码龄19年 1粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值