Desafio 5 - pilhas com vetores

Observe o vídeo a seguir:


Depois de assistir ao vídeo, implemente as seguintes funcionalidades:

1) Altere o método mostrarPilhaInvertida() para que não mostre mais o sinal de exclamação (!).

2) No programa Principal:

a) altere o tamanho do vetor para 50;

b) leia a mensagem conforme mostra o vídeo, armazenando a expressão aritmética em uma String;

c) transforme a String em um vetor do tipo char para empilhar (não esqueça que para empilhar, é preciso converter cada char em String) e empilhe cada caracter;

d) chame o método mostrarPilhaInvertida().

Dicas

1) A classe String tem o método toCharArray que converte uma String em um array de char.
2) A classe Character tem um método toString que converte um char em String.

Até aqui tudo muito fácil.
Vamos ao desafio:
Desafio

Crie um outro método intitulado desempilharNivel().
Cada vez que o método desempilharNivel() for chamado, ele deverá desempilhar o nível mais interno e manter somente o restante da expressão.

Exemplo:
Valor da String: 1+2*(3-2*(4+(3-7)+1)-2)+4
Após desempilhar nível: 1+2*(3-2*(4+valor+1)-2)+4
Após desempilhar nível: 1+2*(3-2*valor-2)+4
Após desempilhar nível: 1+2*valor+4  (TERMINANDO OS PARÊNTESES A SEREM DESEMPILHADOS, CONSIDERA FIM)