Pilha: Verificar sequência parentes e colchetes
Criar programa que verificará se a sequência de parentes e colchetes está correta.
Considera Correta as sequências: () , [] , (()) , [[]] , [()] , ([]), ([([()])])
Considera Inválida as sequências: (( , )) , [[ , ]] , (] , ([)))
O programa deve:
- Perguntar ao usuário qual sequência verificar.
- Realizar a verificação
- Perguntar se usuário deseja sair do sistema.
Palavra chave: Pilha
Fonte: IGTI.
Aula explicativa: Primeira, Segunda, Terceira, Quarta, Quinta.
Código:
code
import java.util.Scanner;
import java.util.Stack;
public class Sequencia {
private Scanner scanner = new Scanner(System.in);
private String mostrarMenu() {
System.out.println("Digite a sequência para verificação "
+ "ou digite sair: ");
return scanner.nextLine();
}
public void iniciar() {
String sequencia = mostrarMenu();
while (!sequencia.equals("sair")) {
Stack<String> stack = new Stack<>();
boolean isSequenciaOk = true;
if (!isSequenciaOk) {
break;
}
for (int i = 0; i < sequencia.length(); i++) {
char c = sequencia.charAt(i);
switch (c) {
case ')':
if (stack.isEmpty()) {
System.out.println("Sequência inválida");
sequencia = mostrarMenu();
isSequenciaOk = false;
} else {
String elemento = stack.pop();
if (!elemento.equals("(")) {
System.out.println("Sequência inválida!");
sequencia = mostrarMenu();
isSequenciaOk = false;
}
}
break;
case ']':
if (stack.isEmpty()) {
System.out.println("Sequência inválida");
sequencia = mostrarMenu();
isSequenciaOk = false;
} else {
String elemento = stack.pop();
if (!elemento.equals("[")) {
System.out.println("Sequência inválida!");
sequencia = mostrarMenu();
isSequenciaOk = false;
}
}
break;
default:
stack.push(String.valueOf(c));
}
}
if (stack.isEmpty()) {
System.out.println("A Sequência está Correta!");
} else {
System.out.println("Sequência está incorreta!");
}
sequencia = mostrarMenu();
}
}
}
Comentários
Postar um comentário