Una String Palindrome es una string cuya string invertida es igual a la string original. En este programa Java, vamos a ver el enfoque de imprimir la palabra palíndromo más pequeña y más grande en una string.
Dada una oración de palabras en forma de string, necesitamos imprimir la palabra palindrómica más pequeña y más larga de esas palabras.
Ejemplo:
Input: Wow madam is driving racecar. Smallest Palindrome: Wow Longest Palindrome: racecar Explanation: The string contains three palindrome words (i.e., madam, Wow, racecar) but the length of racecar is greatest and that of wow is smallest. Input: "Nitin is a good guy" Smallest Palindrome: a Longest Palindrome: Nitin
Acercarse:
- lengthPalindrome() encuentra la palabra palíndromo más larga y más pequeña extrayendo cada palabra de la string y pasándola a la función checkPalin() y luego actualizando la string de respuesta para la string más pequeña y más larga comparándola con la longitud de la string original si es un palíndromo.
- La función checkPalin() comprueba si la palabra es palíndromo. Devuelve verdadero si la palabra es palíndromo; de lo contrario, devuelve falso. Se asegura de que las strings vacías no se cuenten como palíndromo, ya que el usuario puede ingresar más de un espacio entre o al principio de la string.
Ejemplo:
Java
// Java program to print the smallest and // longest palindromic word out of the words of a sentence public class Main { // Function to check if a // word is palindrome public static boolean checkPalin(String word) { int n = word.length(); // making the check case // case insensitive word = word.toLowerCase(); // loop to check palindrome for (int i = 0; i < n; i++, n--) { if (word.charAt(i) != word.charAt(n - 1)) return false; } return true; } // Determine the smallest and biggest // palindromes in a given string public static void lengthPalindrome(int temp, String words[]) { int count = 0; String smallest = "", longest = ""; for (int i = 0; i < temp; i++) { if (checkPalin(words[i])) { count++; // Initialize smallest and longest // when first palindromic word // is found if (count == 1) smallest = longest = words[i]; // Compare smallest and longest with each // palindromic words else { // If length of smallest is greater // than next palindromic word then // Store that word in smallest if (smallest.length() > words[i].length()) smallest = words[i]; // If length of longest is less // than next palindromic word then // Store that word in longest if (longest.length() < words[i].length()) longest = words[i]; } } } if (count == 0) System.out.println("No palindrome found"); else { System.out.println("Smallest palindrome: " + smallest); System.out.println("Biggest palindrome: " + longest); } } public static void main(String[] args) { String string = "Wow Madam is driving racecar"; String word = ""; String[] words = new String[100]; int temp = 0; // Add extra space after string // to get the last word string = string + " "; for (int i = 0; i < string.length(); i++) { // Split the string into words if (string.charAt(i) != ' ') { word = word + string.charAt(i); } else { // Add word to array words words[temp] = word; temp++; word = ""; } } System.out.println("Inputted String : " + string); lengthPalindrome(temp, words); } }
Producción
Inputted String : Wow Madam is driving racecar Smallest palindrome: Wow Biggest palindrome: racecar