stackApp符号匹配

public class SymbolMatch {    public static boolean isMatch(String s){        //[{()}]        ArrayStack<Character> arrayStack = new ArrayStack<Character>();        for(int i=0;i<s.length();i++){            char c = s.charAt(i);            if(c==‘[‘ || c==‘{‘ || c==‘(‘){                arrayStack.push(c);//放入栈中[{(            }else{                if(arrayStack.isEmpty()){                   return false;                }                Character pop = arrayStack.pop();//获取栈顶元素                if(c==‘]‘ && pop!=‘[‘) {//如果当前字符和栈顶的字符匹配,                    return false;                }                if(c==‘}‘ && pop!=‘{‘) {                    return false;                }                if(c==‘)‘ && pop!=‘(‘){                    return false;                }            }        }        return arrayStack.isEmpty();    }

public static void main(String[] args) {        boolean match = isMatch("{(])}");        System.out.println(match);    }

}

原文地址:https://www.cnblogs.com/huiandong/p/10225946.html

时间: 2024-07-29 02:39:14

stackApp符号匹配的相关文章

栈的应用---编译器的符号匹配

算法 1   从第一个字符开始扫描 2   当遇见普通字符时候忽略,遇见做字符压入栈. 3    当遇见右符号时候从栈中弹出栈顶符号 匹配成功,继续读入下一字符 匹配失败,立即停止并报错 成功:所有字符扫描完毕,且栈为空 失败:匹配失败或者所有字符扫描完毕但栈不是空的. 伪代码: int scanner(const char* code) { 创建栈: int i = 0; while( code[i] != '\0' ) { if( 左符号) { 进栈: } if( 右符号 ) { 将右符号读

NSString 转 UTF-8 的符号匹配问题

encode NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)self,NULL,CFSTR("!*'();:@&=+$,/?%#[]"),kCFStringEncodingUTF8); decode NSString *result = (NSString *)CFURLCreateStringByReplacingP

栈的实现,进制数转换以及符号匹配

//seqstack.h #ifndef _SEQSTACK_H #define _SEQSTACK_H #define STACK_SIZE 20 typedef int ElemType; //若要使用功能5 请将int 改为char #include<iostream> #include<assert.h> using namespace std; typedef struct Stack { ElemType *base; int capacity; int top; }S

Windbg符号与源码 《第二篇》

符号文件是一种辅助数据,它包含了对应用程序代码的一些标注信息,这些信息在调试过程中非常有用.如果没有辅助数据,那么能获得的信息就只有应用程序的二进制文件.二进制文件很难调试,因为无法看到代码中的函数名.数据结构名等.这正是符号文件能显示的.符号文件的扩展名通常是pdb,调试器能够很好地解析这种文件格式. 编译器和链接器在创建二进制镜像文件(诸如exe.dll.sys)时,伴生的后缀名为.dbg..sym或.pdb的包含镜像文件编译.链接过程中生成的符号信息的文件称为符号文件.具体来说,符号信息包

正则表达式匹配包括换行符的所有字符

今天在Java中想使用正则表达式来获取一段文本中的任意字符. (.*) 结果运行之后才发现,无法获得换行之后的文本.于是查了一下手册,才发现正则表达式中,"."(点符号)匹配的是除了换行符"\n"以外的所有字符. 查出了一个解决办法,经过一试,果然可以匹配包括换行符在内的任意字符,以下为正确的正则表达式匹配规则: ([\s\S]*)正则表达式匹配包括换行符的所有字符,布布扣,bubuko.com

正则表达式的符号基本使用说明

***基本正则表达式(可支持grep,sed,awk等shell工具) * 0个或多个在*字符前面的那个普通字符. 匹配任意字符^ 匹配行首,或后面字符是非$ 匹配行尾 []匹配字符集合\ 转义符,屏蔽一个元字符的特殊意义\<\>  精确匹配符号\{n\} 匹配前面字符出现n次\{n,\} 匹配前面字符至少出现n次\{n,m\} 匹配前面字符出现n~m次 注意:符号*前面必须至少有两个字符(当符号*后面没有字符时)或必须*前面至少有一个字符(当符号*后面至少有一个字符时)才有意义      符

通过完善邮箱匹配来一步步学习正则表达

首先,在学习之前先确定一下邮箱的格式,邮箱的一般格式为[email protected],其中xxx可为数字.字母.下划线_,中划线-,点号.,加号+等组成. 在看具体代码之前需要先了解一些基础知识 # []表示匹配字符集中的任意一个字符# \w 表示匹配任何字母数字字符# \s表示任何空格字符# \d表示任何十进制数字# +表示匹配1次或多次前面出现的正则表达# *表示匹配0次或多次前面出现的正则表达# (?:)表示一个匹配不用保存的分组 1.匹配最简单的邮箱格式,如[email protec

含有换行符的正则表达式如何匹配

含有换行符的正则表达式如何匹配: \s\S \S是各种空白字符,比如\n\t之类的,而\s是^\S 点号( . )可以匹配换行符之外的任何单个字符,被称之为通配符. 匹配包含\n在內的任何字符用 (.|\n). import re strvar = """hello world!""" patt = r'(.|\n)*' rs = re.match(patt, strvar) print rs.group() 用正则表达式来获取一段文本中的任意字

使用正则表达式匹配任意字符包括空格和换行符

注:元字符包括\ | ( ) [ ] { } ^ $ * + ? . ) 匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</>|<.*? />