Dans cet article, nous aborderons une question d'entretien courante : vérifier si une chaîne donnée est un palindrome. Ce problème est un excellent exercice pour comprendre les pointeurs, les boucles et la logique conditionnelle en Java.
Écrivez une méthode Java qui vérifie si une chaîne donnée est un palindrome. Un palindrome est un mot ou une phrase qui se lit de la même manière vers l'avant et vers l'arrière (par exemple, « midi » ou « madame »).
La solution exploite une technique à deux pointeurs pour vérifier les caractères des deux extrémités de la chaîne, en se déplaçant vers le centre. En comparant les caractères aux positions correspondantes, nous pouvons déterminer si la chaîne est un palindrome sans avoir à l'inverser.
Voici le code de la solution :
public class StringPalindromeQuestion { // Method to check if a given string is a palindrome private boolean isPalindrome(String string) { if (string != null) { for (int i = 0, j = string.length() - 1; i < string.length() / 2; i++, j--) { if (string.charAt(i) != string.charAt(j)) { return false; } } } return true; } public static void main(String[] args) { StringPalindromeQuestion palindrome = new StringPalindromeQuestion(); String oddString = "abcdcba"; // Palindrome with odd length String evenString = "abccba"; // Palindrome with even length String nonPalindrome = "asfgsa"; // Not a palindrome // Result: true System.out.println(palindrome.isPalindrome(oddString)); // Result: true System.out.println(palindrome.isPalindrome(evenString)); // Result: false System.out.println(palindrome.isPalindrome(nonPalindrome)); // Testing with null // Result: true System.out.println(palindrome.isPalindrome(null)); } }
1. Approche en deux points :
On initialise deux pointeurs : un au début (i) et un à la fin (j).
Nous comparons les caractères à ces positions (string.charAt(i) et string.charAt(j)) et incrémentons i et décrémentons j après chaque comparaison.
La boucle ne s'étend que jusqu'à string.length() / 2, garantissant un parcours efficace, que la longueur soit paire ou impaire.
2. Longueur impaire ou paire :
Pour les chaînes de longueur paire (par exemple, "abccba"), la méthode vérifie jusqu'au milieu, donc aucun caractère central ne reste décoché.
Pour les chaînes de longueur impaire (par exemple, "abcdcba"), le caractère du milieu n'affecte naturellement pas le statut du palindrome.
3. Gestion des valeurs nulles :
La méthode vérifie si la chaîne est nulle au début pour éviter NullPointerException.
Palindrome de longueur impaire : "abcdcba" renvoie vrai.
Palindrome de longueur paire : "abccba" renvoie vrai.
Non Palindrome : "asfgsa" renvoie false.
Null String : renvoie vrai (une entrée nulle est considérée comme un palindrome par cette implémentation).
Comprendre les techniques à deux pointeurs est précieux pour résoudre efficacement de nombreux problèmes basés sur les chaînes. Cette technique évite une complexité spatiale supplémentaire et accélère l'exécution du code en limitant les comparaisons inutiles.
Cette solution fournit un moyen propre et efficace de vérifier les palindromes en Java. Essayez d'utiliser cette approche avec différentes entrées de chaîne pour consolider davantage votre compréhension de la manipulation du pointeur et du parcours de chaîne.
Bon codage !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!