`
zzq19860626
  • 浏览: 264173 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
B20df9e2-fb3d-3644-9f72-c1619842f682
设计模式学习笔记
浏览量:179881
87eaf24f-812a-3463-8e65-e3197d2ad8c2
java虚拟机
浏览量:26575
社区版块
存档分类
最新评论

判断表达式括号是否匹配java和js版本

阅读更多

 

 

本文转自:alaric's blog

 

昨天在群里有个同学问怎么校验括号是否匹配,
首先想到的是栈,遍历字符,如果遇到(,[,{就入栈,如果遇到),],}就弹出栈。很快代码如下实现了,这里要说的是java集合中有个栈这个数据结构,不需要自己再实现一个,所以比较快。代码如下:

package pipei;
import java.util.Stack;
/***
*
*【描述】:括号匹配
*【作者】:alaric
*【时间 】:Jun 4, 2012
*【文件】:pipeiMatching.java
*
*/
public class Matching {
public static boolean Match(String str){
char [] charArray = str.toCharArray();
Stack stack = new Stack();
for(char c: charArray){
if(c==’{‘||c==’['||c=='('){
stack.push(c);
}
if(c==')'||c==']‘||c==’}'){
Character cc= stack.pop();
switch(c){
case ‘)’: if(cc!=’(‘)return false;break;
case ‘]’: if(cc!=’[')return false;break;
case '}': if(cc!='{')return false;break;
}
}
}
return true;
}
/**
*【描述】:括号匹配测试
*【作者】:alaric
*【时间 】:Jun 4, 2012
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String string=”[[(()eeee)]]”;
if (Match(string)) {
System.out.println(“匹配”);
}else {
System.out.println(“不匹配”);
}
}
}
 

 

当我发出代码的时候,他说他要js写的,java看不懂,我崩溃,js实现个栈还是需要点时间的,于是拖到今天,终于有空实现下了,
代码如下:

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Insert title here</title>
</head>
<body>
<script>
function Stock(count)
{
this.ptCount=-1;//指向最后一个数据的指针
this.count=100;//容量
this.myArray=new Array();
if(count!=undefined)
{
this.count=count;
this.myArray=new Array(this.count);
}else{
this.count=0;
}
this.Info=function(mvalue)//进栈
{
if (this.ptCount == this.count)
{
return false;
}else{
++this.ptCount;
this.myArray[this.ptCount] = mvalue;
return true;
}
return false;
}
this.Out=function()//出栈
{
if (this.ptCount == -1)
{
return false;
}
else
{
var reObject;
reObject = this.myArray[this.ptCount];
this.ptCount–;
return reObject;
}
}
this.RLCount=function()
{
return this.ptCount + 1;
}
this.Clear=function()
{
this.ptCount=-1;
}
}
function Match(str){
var charArray =new Array();
charArray= str.split(“”);
var stack = new Stock(100);
for(var i=0;i<charArray.length;i++){
var c= charArray[i];
if(c==’{‘||c==’['||c=='('){
stack.Info(c);
}
if(c==')'||c==']‘||c==’}'){
var cc= stack.Out();
switch(c){
case ‘)’: if(cc!=’(‘)return false;break;
case ‘]’: if(cc!=’[‘)return false;break;
case ‘}’: if(cc!=’{‘)return false;break;
}
}
}
if(stack.Out())return false;
return true;
}
function test(){
var str = document.getElementById(“strId”).value
var b = Match(str);
document.getElementById ( “outId” ).value=b;
}
</script>
<input type=”text” id=”strId” value=”"/>
<input type=”text” id=”outId” value=”"/>
<input type=”button” onclick=”test();” value=”submit” />
</body>
</html>
 

js 栈的实现,稍微有点麻烦,至少你要明白什么是栈这种数据结构,如果你了解了,这里这个代码不是很困难的。

分享到:
评论

相关推荐

    Java JS正则表达式大全

    ...)`,它们用来判断正则表达式之后是否跟有特定的模式,但不包含这部分匹配。例如,`/^\d+(?=px)$/`会匹配以数字开头,以"px"结尾的字符串,但不包含"px"。 此外,正则表达式还可以进行分组,用括号`()`包裹,分组...

    JAVA的正则表达式.doc

    Java的正则表达式是Java编程语言中用于处理字符串模式匹配的重要工具。在Java中,正则表达式通常用于数据验证、文本搜索和替换等任务。以下是对Java正则表达式的关键知识点的详细解释: 1. **英文句点符号**:`.` ...

    java正则表达式讲义.ppt

    使用Java正则表达式有许多优点,例如能显著减少判断EMAIL等复杂任务的代码量,提高编程效率。当然,这也需要开发者掌握正则表达式的用法,这可能需要额外的学习成本。 基础的正则表达式知识包括以下几个关键概念: ...

    Java正则表达式详解

    - 示例1使用`Pattern`和`Matcher`:首先创建`Pattern`对象,然后用`matcher()`方法创建`Matcher`对象,再调用`matches()`方法判断字符串是否匹配。 - 示例2使用`Pattern.matches()`:直接对字符串进行匹配,适合一...

    正则表达式做验证的范例

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串。在编程中,正则表达式常用于数据验证,确保用户输入的数据符合特定格式或规则,从而提高程序的安全性和用户体验。相比于传统的if语句或其他...

    java正则表达式课件

    Java正则表达式是Java语言中用于处理文本模式匹配的重要工具,它源于早期对神经网络的研究,由数学家Stephen Kleene提出,并在Ken Thompson的计算搜索算法中得到应用,最终在Unix的qed编辑器中实现了第一个实用场景...

    js正则表达式详解

    ### js正则表达式详解 #### 一、正则表达式基础知识 正则表达式是一种强大的文本处理工具,被广泛应用于各种编程语言中,用于文本的查找与替换、验证等场景。JavaScript同样支持正则表达式的使用,并且具有非常...

    正则表达式实现字符的模糊匹配功能示例

    1. IP地址的匹配表达式使用了括号和数字范围限定符`{1,3}`来限定每一部分数字为1到3位。其正则表达式为:`^(121.15.215.(\\d{1,3}))$`。 2. 字符串模糊匹配表达式演示了如何使用正则表达式实现包含"张三"或"name"等...

    正则表达式

    JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. 在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp...

    正则表达式教程合集(各种语言的,超全)

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串。它由特殊字符和普通字符组成,能够灵活地表示各种复杂的字符串模式。本教程合集涵盖了多种编程语言中的正则表达式规则和应用,包括...

    正则表达式检查小工具

    - 输入正则表达式和测试字符串,判断正则表达式是否能正确匹配。 - 提供常见正则表达式的示例和解释,帮助用户理解和学习。 - 支持多种正则表达式语法,包括Java、JavaScript等,以满足不同编程语言的需求。 - 显示...

    正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度

    ### 正则表达式判断是否存在中文和全角字符 在处理文本数据时,尤其是在需要确保数据安全性与准确性的场合下,判断字符串中是否含有中文字符或全角字符是非常重要的。以下是一些关键知识点: #### 1. 正则表达式...

    正则表达式详解呀

    对于早期版本的Java,可以使用Jakarta-ORO库来实现正则表达式功能。下面通过一个简单的Java代码示例展示正则表达式的使用: ```java import java.util.regex.*; public class RegexDemo { public static void ...

    正则表达式_正则表达式_源码

    - 不同编程语言中,正则表达式的实现和语法细节可能有所不同,例如Perl、JavaScript、Python和Java等都有各自的实现和特点。 在实际应用中,正则表达式可以配合各种编程语言的函数库,如JavaScript的`match()`、`...

    (Java Script %26 正则表达式)使用手册

    `test` 方法返回一个布尔值,指示字符串是否与正则表达式匹配。 ```javascript let re = /hello/; console.log(re.test("hello, world!")); // 输出: true ``` ##### 4.1.4 exec 方法 `exec` 方法返回一个数组,...

Global site tag (gtag.js) - Google Analytics