㈠ 在Java中,設計一個演算法,判斷一個算術表達式中的括弧是否配對。
演算法:
String str="5+(4-3))" 表達式
char kuohao[]; 用作括弧堆棧
掃描str中的字元
1如果是(則入棧
2如果是)
a如果戰不空出棧
b如果棧空,不匹配。演算法結束
最後棧空則匹配
下面是我的實現
public class biaodashi {
public static void main(String args[])
{
int top=0;//堆指針
boolean end=true;//不匹配時只輸出一次
char stack[]=new char[100];//存括弧
String biaoda="(((1+(2)-6))";//表達式
char biao[]=biaoda.toCharArray();//將字元串轉化成字元數組
System.out.println("表達式: "+biaoda);
for(int i=0;i<biao.length&&end;i++)//遍歷表達式中所有字元
{
if(biao[i]=='(')//如果是(則入棧
{
stack[top]='(';
top++;
}
else if(biao[i]==')')//如果是)則出戰
{
if(!(top==0))
top--;
else
{
System.out.println("括弧不匹配");
end=false;
}
}
}//除循環兩種可能
if(top==0&&end)
System.out.println("括弧匹配");//出循環stack空
else if(top!=0&&end)
System.out.println("括弧不匹配");//出循環時stack不空
}
}
㈡ C#括弧匹配問題演算法
constCharRIGHT='}';
constCharLEFT='{';
staticvoidMain(string[]args)
{
Queue<Char>queue=newQueue<Char>();
StringtargetValue="sd{{}";
BooleanisValid=true;
foreach(CharitemintargetValue)
{
if(item.Equals(LEFT))queue.Enqueue(item);
if(queue.Count>0&&!item.Equals(RIGHT)&&!item.Equals(LEFT)){
isValid=false;
break;
}
if(queue.Count>0&&item.Equals(RIGHT))queue.Dequeue();
}
if(isValid&&queue.Count==0)Console.WriteLine("匹配");
elseConsole.WriteLine("不匹配");
Console.ReadKey();
}
㈢ 如何用兩種括弧()和[]設計一個演算法判斷一個算數表達式中的括弧是否匹配
include "seqstack1.h"
include "stdio.h"
void BracketMatch(char str);
void BracketMatch(char str) /*str[]中為輸入的字元串,利用堆棧技術來檢查該字元串中的括弧是否匹配