一个小问题(语法分析中的括号匹配)

简介:
网友问题:
这是东北大学2004年硕士研究生考试的一道考题,15分,估计不是很复杂,但是就是没有思路,恨死我了。
设有算术表达式,其中包含有大括号“{ "" }"  中括号"[" "]" 小括号 "(" ")"
试编写一个递归函数,判断表达式中的括号是否匹配?
谢谢!
 
java程序,仅供参考:
package test;
import java.util.*;
public class Test {
 
   public String text="fewe{f(sdd(f)a[j]sdk)j}f";
    int i=0;
    public LinkedList stack=new LinkedList();
    public Test() {
    }
    public String analyiz(int ip){
       char temp=text.charAt(ip);
       char a;
       if(temp=='('||temp=='['||temp=='{'){
           stack.add(temp);
       }else if(temp==')'){
           a=(Character)stack.getLast();
           if(a=='('){
              stack.removeLast();
           }
       }else if(temp==']'){
           a=(Character)stack.getLast();
           if(a=='['){
              stack.removeLast();
           }
       }else if(temp=='}'){
           a=(Character)stack.getLast();
           if(a=='{'){
              stack.removeLast();
           }          
       }
       if(stack.size()==0&&ip==text.length()-1){
           String c="匹配";
           return c;
       }else if(stack.size()!=0&&ip==text.length()-1){
           String b="不匹配";
           return b;
       }else{
           return analyiz(ip+1);//递归
       }
    }
    public static void main(String[] args){
        Test test=new Test();
        String a=test.analyiz(0);
        System.out.println(a);
    }
}



本文转自 xhinkerx 51CTO博客,原文链接:http://blog.51cto.com/xhinker/133585,如需转载请自行联系原作者
目录
相关文章
|
搜索推荐 UED
产品服务个性化定制
产品服务个性化定制
422 2
|
域名解析 网络协议 Linux
curl 和 wget 的使用和区别
curl 和 wget 的使用和区别
523 0
|
设计模式 架构师 Java
阿里P8架构师都要学习研究的java加强版23种设计模式神级PDF文档
说在前面的话 Java作为老牌纯正的编程语言,在规范性上有着天然优势。因此本版的设计模式讲解全部用Java语言来描述,并针对Java语言的特性对讲解内容做了相当大的改动。 不知道大家是否听过编程界的一段话:掌握设计模式相当于华山派的"气宗",是程序员的内功修为,虽然在同样的学习时间下,类似Python这种"剑宗"的开发模式见效更快,但是长远来看,"气宗"才是走向软件架构师以上级别的必由之路。 所以,掌握气宗就掌握了编程命脉,然而学习设计模式有四大境界: 接下来给大家分享的就是java溢彩加强版大话设计模式包含的内容知识点。 总目录 主要内容 本文是百万销量的经典畅销书《
360 0
|
9月前
|
安全 API 开发工具
什么是Token
Token是一种用于身份验证和授权的凭证,广泛应用于云计算、API调用、实时音视频通信等场景。它通过加密算法生成,确保请求合法性与服务安全性。Token的核心作用包括身份验证、权限控制、安全保障和无状态化设计。生成方式有控制台、SDK、OpenAPI、JWT和服务端生成等。Token通常包含AppID、UserID、时间戳等字段,并通过哈希算法计算。应用场景涵盖智能语音交互、实时音视频通信、API网关和STS临时访问凭证等。使用时需注意有效期、密钥管理、权限设置和传输安全。
4877 4
|
JavaScript 安全 前端开发
乾坤js隔离机制
乾坤js隔离机制
|
监控 iOS开发
iOS15适配问题:viewForSupplementaryElementOfKind表头和表尾复用闪退,UITableView section header多22像素等问题
iOS15适配问题:viewForSupplementaryElementOfKind表头和表尾复用闪退,UITableView section header多22像素等问题
462 0
|
Prometheus Kubernetes Cloud Native
Flagger(应用自动发布)介绍和原理剖析
## 简介 [Flagger](https://github.com/weaveworks/flagger)是一个能使运行在k8s体系上的应用发布流程全自动(无人参与)的工具, 它能减少发布的人为关注时间, 并且在发布过程中能自动识别一些风险(例如:RT,成功率,自定义metrics)并回滚. ## 主要特性 ![features](https://intranetproxy.ali
4974 0
|
机器学习/深度学习 存储 人工智能
Zero-Shot, One-Shot, and Few-Shot Learning概念介绍
Zero-Shot, One-Shot, and Few-Shot Learning概念介绍
8955 0
|
JavaScript
html+css+js实现文本编辑器
html+css+js实现文本编辑器
218 0
|
存储 SQL 数据库管理
NUMERIC(10,4) 和DECIMAL(10, 4) 的区别和用法?
NUMERIC(10,4) 和DECIMAL(10, 4) 的区别和用法
1203 0

热门文章

最新文章