java语言中 用栈实现一个字符串的匹配问题,如何解决,请教高手:
String str = "[{()}]";这种是匹配的,
String str = "[{()}][";这种是不匹配的,

解决方案 »

  1.   

    不知道你是不是检查括号匹配问题?如果是:
    先把string变成stringbuffer
    然后弄个栈
    遇到左括号进栈
    如果刚开始遇到左括号,返回不匹配,否则:
    遇到右括号出栈,并且比较两个括号是否一样,如果不一样则返回不匹配
    如果是则继续执行
    最后检查栈是否为空,如果为空则返回匹配,否则返回不匹配
      

  2.   

    初学者,搞了一个多小时才弄出来了.首先楼主给的题目太局限性了.可以这么说,类似[](){}  {[()]}这样的字符串也就是匹配的,不管中间有多少空格.下面给出代码:
    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("不匹配!");


    }}}