0

Praticando Programação em Java - Entrevista Embaraçosa.

#Java
D
Danilo Galete

Ola a todos.


Não sei se alguem já fez este desafio e conseguiu entregar de forma correta. Tenho uma lógica de resolução em mente. Porem passa nos testes aberto, mas é reprovado nos testes fechado. É muito facil achar a solução na internet, existem varios portiforios no GitHub com o algoritmo de solução, no entanto todas as soluções são iguais, tipo um jogo de Ctrl + C e Ctrl + V. Alguem conseguiu resolver o desafio utilizando uma outra abordagem? Se sim, me passa umas dicas pois não consigo resolver este simples desafio. Rsrs.


import java.util.Scanner;

/**
  * Ao analisar os dados de entrada e sai vemos que o padrão
  * das repetições ocorre pela seguinte situação:
  *         
  *         Se existir uma anti-penultima vogal na palavra, uma substring com inicio na 
  *         anti-penultima até a ultima letra da palavra correta, sera adicionada ao final da palavra correta.
  *         Gerando assim a duplicidade de informação. Se não existir uma anti-penultima vogal a frase se mantem igual.
  *         
  *
  */

public class EntrevistaEmbaracosa {
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);

    while (scanner.hasNext()) {  
     printWord(scanner.nextLine());
    }
  }

   
  public static void printWord(String str) {
    
    int len = str.length();
    int cont;
    boolean aux = isVogal(str.charAt(len - 1));
    
    if(len == 1) {
      System.out.println(str);
      return;
    }
      
    for(cont = (len - 1); cont > len / 2; cont--) {

        
      if(isVogal(str.charAt(cont - 1))) {
        
        if(aux) {
        	
        	if(str.substring(0, cont - 1).endsWith(str.substring(cont, len))) {
          	System.out.println(str.substring(0, cont - 1));
          	return;
          }
          
        } else {
          aux = true;
        }
      }
    }
    
    
    System.out.println(str);
  }
  
  public static boolean isVogal(char c) {
    
    char vogais[] = {'a', 'e', 'i', 'o', 'u'};
    
    for(int x = 0; x < 5; x++) {
      
      if(c == vogais[x]) {
        return true;
      }
    }
    
    return false;
  }
}
0
3

Comentários (5)

1
Ramon Modesto

Ramon Modesto

11/04/2021 13:18

Na entrada testetetete, a sua saída é:

  testetetete

E deveria ser:

  testete
  testetete

Na entrada aaaaaaaaaa, a sua saída é:

  aaaaaaaa

E deveria ser:

  aaaaa
  aaaaaa
  aaaaaaa
  aaaaaaaa
  aaaaaaaaa
1
Danilo Galete

Danilo Galete

11/04/2021 17:04

Em que parte do enunciado do desafio fala que a saída para testetetete deve retornar duas linhas uma com testete e outra com testetete

0
L

Laercio Rodrigues

09/08/2021 15:05

Testei a solução encontrada na internet e passou.

Ou seja a saída para testetetete deve retornar duas linhas uma com testete e outra com testetete.

Isto sem sombra de duvidas não esta no enunciado.


0
Danilo Moura

Danilo Moura

12/04/2021 00:01

A sua lógica está correta o problema do exercício é que o enunciado e os exemplos não deixam claro oque querem, talvez seja um teste para quando tivermos que fazer análise de requisitos com o cliente hahah.

Ele deseja que seja encontrado todas as repetições e que em cada repetição encontrada você retorne a palavra - repetição.

Remova o return onde checa se a string termina igual a substring para poder encontrar todas as repetições e use os exemplos que o Ramon passou para fazer os testes. Também vai precisar fazer outras alterações para rodar.

cont     | str.substring(0, cont)     | str.substring(cont, len)
  10  	 | testetetet 		      | e	
  9 	 | testetete 		      | te    *testetete
  8  	 | testetet 	              | ete
  7  	 | testete 	              | tete  *testete
  6  	 | testet 	              | etete
  ...
0
Danilo Galete

Danilo Galete

11/04/2021 17:10

Quem conseguiu resolver isto por favor me explica o porquê deste retorno qual a lógica neste retorno, minhas idéias se basearam nós resultados apresentado no enunciado. Como eu falei quase todos as soluções que encontrei no Github são frutos de um CRTL + C e CRTL + V. Quem realmente implentou a solução do zero? Se alguém fez isto comente aqui por favor.

Pai, Analista de Sistema, Desenvolvedor Web Full Stack e Contribuidor Open-Source

Brasil