marsabatini / PwC-DC

Desafio de Código para PwC

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PwC-DC

Desafio de Código para PwC

+   Empresa: PwC
+   Objetivo: solucionar 5 desafios propostos
@@  Autor: Marco Sabatini @@

Java

Este repositório possui 5 possíveis soluções desenvolvidas em Java para o desafio de código proposto pela PwC. Como não havia exigência para uma linguagem de programação específica, escolhi Java por quatro motivos básicos:

  1. FAMILIARIDADE: juntamente com C, Java foi a primeira linguagem de programação por onde iniciei meus estudos. Naturalmente, tenho maior familiaridade com ela e um gosto especialmente positivo quando a utilizo.
  2. UTILIZAÇÃO: diversas instituições, incluindo financeiras, utilizam Java em suas soluções, o que amplia também meu horizonte de atuação profissional.
  3. VERSATILIDADE: apesar de verbosa, Java é uma linguagem extremamente versátil, possibilidando diversas soluções diferentes para os mesmos problemas, conforme a necessidade de seus desenvolvedores.
  4. COMUNIDADE: Java possui uma comunidade ativa e bem consolidada que está disposta a trocar informações, criar novidades e solucionar eventuais problemas.

Sobre o desafio

A PwC sugeriu, em seu processo seletivo, um desafio de código para 5 problemas:

  • DESAFIO 01: reverter a ordem de palavras em uma frase, mantendo, porém, a ordem de suas letras.
  • DESAFIO 02: remover os caracteres duplicados em uma string.
  • DESAFIO 03: descobrir a maior substring palíndroma em uma string.
  • DESAFIO 04: tornar maiúscula a primeira letra de cada frase.
  • DESAFIO 05: verificar se uma string é um anagrama de um palíndromo.

Para todos os desafios foram propostos inputs específicos cuja saída deveria, também, ser uma saída específica.

Sobre as soluções

Os códigos foram criados com a finalidade de demonstrar conhecimento e criatividade. Eles oscilam, desse modo, entre a praticidade e a complexidade. Como pode-se notar, alguns programas poderiam ser facilmente refatorados a fim de que fossem mais simples de ler e mais otimizados em suas estruturas. Para fins didáticos, no entanto, optei por soluções mais completas e, tentei, sempre que possível, diferenciá-las, por meio de uma escrita mais original, de códigos repetidamente encontrados na internet. Afinal, no cotidiano, os problemas que surgem sempre estão além de soluções padronizadas que comumente são transmitidas. Entre as técnicas utilizadas, estão:

  • Entrada de dados por meio da classe Scanner;
  • Loops (for e while);
  • Condicionais (if/else e switch);
  • Utilização de métodos próprios;
  • Documentação e comentários;
  • Stream();
  • ArrayList(), LinkedHashSet() e StringBuilder() e seus métodos;

Apesar do esforço, muitas melhorias poderiam ser implementadas. Por exemplo, poderíamos utilizar o loop "do" no lugar de "while" em alguns casos; poderíamos implementar uma consulta na internet em sites de dicionários retornando o significado, se houver, do palíngromo, nos beneficiando, inclusive, da estrutura try/catch; entre outras melhorias possíveis. Por fim, facilitamos o acesso dos códigos. Para acessar a pasta com os desafios, clique aqui; para acessar diretamente cada código, basta clicar nos links abaixo:

  1. Desafio 01
  2. Desafio 02
  3. Desafio 03
  4. Desafio 04
  5. Desafio 05

Note: Para executar os programas: 1) tenha a JVM instalada em seu compudar; 2) clone esse repositório; 3) acesse, pelo terminal, a pasta com os arquivos *.java; 4) execute o comando: java nomeDoArquivo.java.

Author: Marco Sabatini

Linkedin Github

version

About

Desafio de Código para PwC


Languages

Language:Java 100.0%