code review java – Programa Java de prueba de Palindrome para una entrevista

Pregunta:

En una entrevista, me pidieron que escribiera una función que tomara una palabra de entrada y devolviera verdadero si la palabra es un palíndromo. Al principio utilicé un enfoque con StringBuilder pero el entrevistador dijo que no estaba permitido y que en su lugar usara un bucle for . Obtuve 7/9, así que supongo que es posible mejorar esto:

public static boolean isPalinedrome(String word) {

    for(int i = 0; i < word.length(); i++) {
        if(word.charAt(i) != word.charAt(word.length() - 1 - i)) {
            return false;
        }
    }
    return true;
}

Agregué lo siguiente a la sección main() para probar

String input = "racecar";
if(isPalinedrome(input)) {
    System.out.println(input + " is a palinedrome");
} else {
    System.out.println(input + " is not a palinedrome");
}

La forma en que lo pruebo parece fea. ¿Existe una forma estándar de probar una nueva función? Supongo que si se encuentra en un entorno lo suficientemente avanzado, tendría casos de prueba para que JUnit se ejecute en él, pero ¿algo más simple que se pueda hacer en una entrevista con un IDE en la nube?

Respuesta:

Es suficiente word.length() / 2 hasta word.length() / 2 , ya que esto comparará la primera mitad con la segunda mitad, por lo que no es necesario ir hasta el final.

Como usa word.length() varias veces, puede extraerlo a una variable auxiliar.

Hay un error tipográfico en el nombre del método.

En cuanto a las pruebas, sí, JUnit es el camino a seguir. En un IDE en la nube, puede crear un método auxiliar que tome una sola cadena, llame a isPalindrome e imprima el resultado. De esa manera, puede probar varios casos fácilmente, agregando una línea por caso. Es importante tratar de cubrir casos de esquina y casos potencialmente interesantes, no solo el "camino feliz". Por ejemplo:

  • palíndromo con longitud uniforme
  • palíndromo con longitud impar
  • una sola letra
  • cuerda vacía
  • no palíndromos

Durante una entrevista, también podría valer la pena mencionar la compensación entre comparar caracteres usando .charAt o usar la matriz de caracteres devueltos por .toCharArray .

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım