package five;
/*
* 1.括号匹配
*
*/
public class Match
{
public static void main(String[] args) throws Exception
{
Match m=new Match();
String str=new String("[({<<>>})]");
System.out.println("括号串是:"+str+" "+"是否匹配:"+m.judge(str));
System.out.println("随机括号串");
char[] bracket ="[({<>})]".toCharArray();
//随机生成10个串,长度是8
char[][] randombk=new char[10][8];
for(int x=0;x<10;x++)
{
for(int y=0;y<8;y++)
{
randombk[x][y]=bracket[(int)(Math.random()*7+1)];
}
}
for(int x=0;x<randombk.length;x++)
{
str=new String(randombk[x]);
System.out.println("括号串是:"+str.toString()+" "+"是否匹配:"+m.judge(str));
}
}
public boolean judge(String str) throws Exception
{
char[] bracket =str.toCharArray();
Inn<Character> inn=new Inn<Character>();
for(int x=0;x<bracket.length;x++)
{
if(this.Isleft(bracket[x]))
{
inn.push(bracket[x]);
}
else if(this.Isright(bracket[x]))
{
if(inn.count==0)
{
return false;
}
if(this.Isdouble(inn.pop(), bracket[x]))
{
continue;
}
else
{
return false;
}
}
else
{
return false;
}
}
return true;
}
public boolean Isleft(char a)
{
if(a=='{'||a=='['||a=='('||a=='<')
return true;
return false;
}
public boolean Isright(char a)
{
if(a=='}'||a==']'||a==')'||a=='>')
return true;
return false;
}
public boolean Isdouble(char left, char right)
{
if(left=='{'&&right=='}')
return true;
else if(left=='['&&right==']')
return true;
else if(left=='('&&right==')')
return true;
else if(left=='<'&&right=='>')
return true;
else
return false;
}
}
10-30
404