Preciso alguém pode me ajudar com a criação de um programa que receba como parametro uma cadeia de caracteres representados por uma sequência de parêntesis e colchetes. A função deve retorna um valor lógico verdadeiro ou falso caso esteja agrupado corretamente e falso caso errado. Considerando é claro que a pilha possui 3 operações puxh(x), pop e top.
Afinal, o que você precisa? De uma pilha, ou de uma pilha aplicada na solução do seu problema?
Poste o que já fez. Esse é o seu segundo tópico que vejo em menos de 15 minutos onde vc expõe seu problema, mas não apresenta o que você fez nem o que pensou em fazer.
[]'s
davidbuzatto
Sua tarefa agora é entender o que está acontecendo, implementar sua pilha e substituir pela pilha que usei.
importjava.util.EmptyStackException;importjava.util.Stack;/** * * @author dbuzatto */publicclassTeste{/** * @param args the command line arguments */publicstaticvoidmain(String[]args){String[]cadeias={"[((]])","([()]",")[]((())","(([]))","()[()()()()([]())()[()(((([][()]))))()]]"};for(Stringc:cadeias){System.out.println(c+" - "+isBalanceada(c));}}publicstaticbooleanisBalanceada(Stringcadeia){Stack<Character>pilha=newStack<Character>();try{for(charc:cadeia.toCharArray()){if(c=='('||c=='['){pilha.push(c);continue;}if((c==')'&&pilha.peek()=='(')||(c==']'&&pilha.peek()=='['))pilha.pop();}}catch(EmptyStackExceptionexc){returnfalse;}returnpilha.isEmpty();}}
WendersonLP
Essa é uma solução onde a lógica deixa o programa bem simples.
Já uma pilha pronta com a funcionalidade de
inserir - push
visualizar topo - top
remover topo - pop
você fará o seguinte: a solução nesse caso só será válida quando a pilha estiver vazia,
caso contrário será falsa.
Quando inserir algo na pilha, tipo “(”, ao ler o próximo você verifica se fecha esse parêntese,
caso fecha você remove o item que está no topo da pilha. Caso não fecha você fará a comparação
do que foi lido com o próximo da lista. E assim vale também para colchetes.