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();

}

}

}

/code




Comentários

Postagens mais visitadas