string 匹配 java语言中 用栈实现一个字符串的匹配问题,如何解决,请教高手:String str = "[{()}]";这种是匹配的,String str = "[{()}][";这种是不匹配的, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道你是不是检查括号匹配问题?如果是:先把string变成stringbuffer然后弄个栈遇到左括号进栈如果刚开始遇到左括号,返回不匹配,否则:遇到右括号出栈,并且比较两个括号是否一样,如果不一样则返回不匹配如果是则继续执行最后检查栈是否为空,如果为空则返回匹配,否则返回不匹配 初学者,搞了一个多小时才弄出来了.首先楼主给的题目太局限性了.可以这么说,类似[](){} {[()]}这样的字符串也就是匹配的,不管中间有多少空格.下面给出代码:import java.util.*;public class Pipei{ public static void main(String[] args) { Stack s=new Stack(); String str1="{}{}[]() {([])}"; char[] ch=str1.toCharArray(); for(int k=0;k<ch.length;k++) { if(ch[k]==0) ch[k]=ch[k+1]; } int i=0; for(i=0;i<ch.length;i++) { if((ch[i]=='(')||(ch[i]=='[')||(ch[i]=='{')) { s.push(ch[i]); } else if((ch[i]==')')&&(s.peek()==(Object)'(')) s.pop(); else if((ch[i]==']')&&(s.peek()==(Object)'[')) s.pop(); else if((ch[i]=='}')&&(s.peek()==(Object)'{')) s.pop(); } if(s.empty()) System.out.println("匹配!"); else System.out.println("不匹配!"); }}} 关于容器中toArray的用法 关于汉诺塔的问题 数组的问题,这个程序麻烦各位帮我看以下,看了半天都不知道哪里有问题... properties类保存冒号至文件时多了一个\ java关于绘制图形的问题 求助:eclipse3.2+tomcat5.5+myeclipse5.1搭建成功,建立jsp报错 求助!!!一个算法问题(在线等) 还是昨天的代码,问一个新的问题! ieHTTPHeaders 工具原理 我的系统中怎么没有odbc数据源啊? 如何用java代码在linux系统下建立文件夹 【面试贴】请为我解疑惑……
先把string变成stringbuffer
然后弄个栈
遇到左括号进栈
如果刚开始遇到左括号,返回不匹配,否则:
遇到右括号出栈,并且比较两个括号是否一样,如果不一样则返回不匹配
如果是则继续执行
最后检查栈是否为空,如果为空则返回匹配,否则返回不匹配
import java.util.*;
public class Pipei
{ public static void main(String[] args)
{
Stack s=new Stack();
String str1="{}{}[]() {([])}";
char[] ch=str1.toCharArray();
for(int k=0;k<ch.length;k++)
{
if(ch[k]==0)
ch[k]=ch[k+1];
}
int i=0;
for(i=0;i<ch.length;i++)
{
if((ch[i]=='(')||(ch[i]=='[')||(ch[i]=='{'))
{
s.push(ch[i]);
}
else if((ch[i]==')')&&(s.peek()==(Object)'('))
s.pop();
else if((ch[i]==']')&&(s.peek()==(Object)'['))
s.pop();
else if((ch[i]=='}')&&(s.peek()==(Object)'{'))
s.pop();
}
if(s.empty())
System.out.println("匹配!");
else
System.out.println("不匹配!");
}}}