Verifique se uma string é palíndromo em Java e Python

Com o passar dos anos, verificar se uma string é um palíndromo ou não se tornou uma questão clássica de entrevista de codificação. Isso ocorre porque envolve conceitos em torno da manipulação e comparação de strings e até mesmo loops, dependendo da implementação. E a pergunta não é longa, então pode ser respondida dentro dos limites de tempo de uma entrevista. Este artigo inclui implementação para verificar se uma string é palíndromo em java e python.

O que é um palíndromo?

De acordo com o sinônimos.com, a definição de palíndromo é "uma palavra ou frase que é lida da mesma forma para a frente e para trás". Basicamente, significa que se você escrever a palavra ou frase ao contrário, ela será exatamente a mesma de quando estava para frente. Por exemplo, pai e mãe são palíndromos e pai e mãe não. A palavra "palíndromo" vem de duas raízes gregas, "palin" que significa novamente e "dromos" que significa caminho ou direção. Foi criado pelo dramaturgo inglês Ben Jonson no século XVII.

Solução

  • A maneira mais comum e fácil de resolver a questão é invertendo a string primeiro e depois comparando-a com a string original. Essa abordagem será O (n) na notação big-O porque a reversão da string é O (n).
  • Outra maneira seria começar a comparar os personagens do início e do fim e continuar até chegar ao meio. Essa abordagem tem uma complexidade de tempo de O (n / 2), mas na notação big-O ainda será O (n). Mas a vantagem dessa abordagem é que você pode retornar False assim que encontrar a primeira incompatibilidade, enquanto com a primeira abordagem, como a reversão de uma string é a primeira etapa, a complexidade do tempo sempre será O (n).

Palíndromo na implementação Python

A seguir está o código para verificar se uma string é palíndromo em python.

def is_palindrome (s): "" "Retorna True se o argumento s for um palíndromo else False" "" assert (isinstance (s, str)), "O argumento s não é do tipo "# Afirma se o argumento fornecido é do tipo return s [:: - 1] == s # Compare o reverso da string com ela mesma se __name __ == "__ main__": print (is_palindrome ("dad"))def is_palindrome (palavra): "" "Compara os caracteres um a um do início e do fim e retorna False quando ocorre a primeira incompatibilidade ou retorna True" "" i1, i2 = 0, len (palavra) -1 # Inicializar os cursores enquanto i2> i1: if palavra [i1]! = palavra [i2]: # Se os caracteres não coincidem, não há necessidade de continuar retorne False i1 + = 1 i2- = 1 return True if __name __ == "__ main__ ": print (is_palindrome (" dad "))

Palíndromo na implementação Java

A seguir está o código para verificar se uma string é palíndromo em java.

public class Palindrome {public static Boolean isPalindrome (String str) {StringBuilder sb = new StringBuilder (str); // StringBuilder tem método reverso return sb.reverse (). ToString (). Equals (str); // Compare o reverso da string com ela mesma} public static void main (String args []) {Boolean b = isPalindrome ("dad"); System.out.println (b); }}public class Palindrome {public static Boolean isPalindrome (String str) {int i1 = 0; int i2 = str.length () - 1; while (i2> i1) {if (str.charAt (i1)! = str.charAt (i2)) {return false; } i1 ++; i2--; } return true; } public static void main (String args []) {Boolean b = isPalindrome ("dad"); System.out.println (b); }}