/*ESCREVA UM PROGRAMA PARA VERIFICAR SE UMA EXPRESSAO MATEMATICA
TEM OS PARENTESES AGRUPADOS DE FORMA CORRETA ISTO É
1 - SE O NUMERO DE PARENTESES A ESQUERDA E A DIREITA SAO IGUAIS E
2 - SE TODO PARENTESE ABERTO É SEGUIDO POSTERIORMENTE POR UM FECHAMENTO
DE PARENTESE
*/
package hierarquiaMatematica;
import java.util.Stack;
/** EX: 06
* A + B [D + C)
* @author HENRIQUE
*/
public class ExpressaoMat {
final static String ABRE = "([{";
final static String FECHA = ")]}";
public static boolean verificaSimbolos(String expressao){
boolean balanceado = true;
Stack<Character> pilha = new Stack<Character>();
int index = 0;
char simbolo, topo;
while(index < expressao.length()){
simbolo = expressao.charAt(index);
if(ABRE.indexOf(simbolo)> -1){
pilha.push(simbolo);
}else if(FECHA.indexOf(simbolo)> -1){
if(pilha.isEmpty()){
return false;
}else{
topo = pilha.pop();
if(ABRE.indexOf(topo) != FECHA.indexOf(simbolo)){
return false;
}
}
}index++;
}
return true;
}
public static void main(String[] args) {
imprimeResultado("A + B");
imprimeResultado("A + B + (C - D)");
imprimeResultado("{[()]{[](){()}");
imprimeResultado("{[(]}[]()[()}");//desbalanceado
imprimeResultado("A + B + C - D");//OK
}
public static void imprimeResultado(String expressao){
System.out.println(expressao+" está balanceado ? "+verificaSimbolos(expressao));
}
}
Nenhum comentário:
Postar um comentário