Java manier om te controleren of een string palindroom is

Ik wil controleren of een string een palindroom is of niet. Ik zou graag een eenvoudige methode willen leren om hetzelfde te controleren met zo min mogelijk stringmanipulaties


Antwoord 1, autoriteit 100%

Het gebruik van reverseis overkill omdat u geen extra string hoeft te genereren, u hoeft alleen de bestaande string op te vragen. In het volgende voorbeeld wordt gecontroleerd of de eerste en laatste tekens hetzelfde zijn en loopt vervolgens verder in de tekenreeks om de resultaten elke keer te controleren. Het keert terug zodra sgeen palindroom is.

Het probleem met de reverse-aanpak is dat het al het werk vooraf doet. Het voert een dure actie uit op een tekenreeks, controleert vervolgens teken voor teken totdat de tekenreeksen niet gelijk zijn en retourneert pas daarna false als het geen palindroom is. Als je de hele tijd kleine strings vergelijkt, is dit prima, maar als je jezelf wilt verdedigen tegen grotere invoer, moet je dit algoritme overwegen.

boolean isPalindrome(String s) {
  int n = s.length();
  for (int i = 0; i < (n/2); ++i) {
     if (s.charAt(i) != s.charAt(n - i - 1)) {
         return false;
     }
  }
  return true;
}

Antwoord 2, autoriteit 21%

Voor de minste regels code en het eenvoudigste geval

if(s.equals(new StringBuilder(s).reverse().toString())) // is a palindrome.

Antwoord 3, autoriteit 10%

Hier is een simpele”

public class Palindrome {
    public static void main(String [] args){
        Palindrome pn = new Palindrome();
        if(pn.isPalindrome("ABBA")){
            System.out.println("Palindrome");
        } else {
            System.out.println("Not Palindrome");
        }   
    }
    public boolean isPalindrome(String original){
        int i = original.length()-1;
        int j=0;
        while(i > j) {
            if(original.charAt(i) != original.charAt(j)) {
                return false;
            }
            i--;
            j++;
        }
        return true;
    }
}

Antwoord 4, autoriteit 7%

Je kunt zoiets als dit proberen:

   String variable = ""; #write a string name
    StringBuffer rev = new StringBuffer(variable).reverse(); 
    String strRev = rev.toString(); 
    if(variable.equalsIgnoreCase(strRev)) # Check the condition

Antwoord 5, autoriteit 6%

Hier is een goede les:

public class Palindrome {
  public static boolean isPalindrome(String stringToTest) {
    String workingCopy = removeJunk(stringToTest);
    String reversedCopy = reverse(workingCopy);
    return reversedCopy.equalsIgnoreCase(workingCopy);
  }
  protected static String removeJunk(String string) {
    int i, len = string.length();
    StringBuffer dest = new StringBuffer(len);
    char c;
    for (i = (len - 1); i >= 0; i--) {
      c = string.charAt(i);
      if (Character.isLetterOrDigit(c)) {
        dest.append(c);
      }
    }
    return dest.toString();
  }
  protected static String reverse(String string) {
    StringBuffer sb = new StringBuffer(string);
    return sb.reverse().toString();
  }
  public static void main(String[] args) {
    String string = "Madam, I'm Adam.";
    System.out.println();
    System.out.println("Testing whether the following "
        + "string is a palindrome:");
    System.out.println("    " + string);
    System.out.println();
    if (isPalindrome(string)) {
      System.out.println("It IS a palindrome!");
    } else {
      System.out.println("It is NOT a palindrome!");
    }
    System.out.println();
  }
}

Veel plezier.


Antwoord 6, autoriteit 2%

public boolean isPalindrom(String text) {
    StringBuffer stringBuffer = new StringBuffer(text);
     return stringBuffer.reverse().toString().equals(text);
}

Antwoord 7, autoriteit 2%

Ik denk dat dit een eenvoudige manier is om palindroom te controleren

String strToRevrse = "MOM";
strToRevrse.equalsIgnoreCase(new StringBuilder(strToRevrse).reverse().toString());

Antwoord 8

Ik ben nieuw in Java en ik vat je vraag op als een uitdaging om ook mijn kennis te verbeteren, dus vergeef me als dit je vraag niet goed beantwoordt:

import java.util.ArrayList;
import java.util.List;
public class PalindromeRecursiveBoolean {
    public static boolean isPalindrome(String str) {
        str = str.toUpperCase();
        char[] strChars = str.toCharArray();
        List<Character> word = new ArrayList<>();
        for (char c : strChars) {
            word.add(c);
        }
        while (true) {
            if ((word.size() == 1) || (word.size() == 0)) {
                return true;
            }
            if (word.get(0) == word.get(word.size() - 1)) {
                word.remove(0);
                word.remove(word.size() - 1);
            } else {
                return false;
            }
        }
    }
}
  1. Als de string is gemaakt van geen letters of slechts één letter, is het a
    palindroom.
  2. Vergelijk anders de eerste en laatste letters van de string.
    • Als de eerste en laatste letter verschillen, is de string geen palindroom
    • Anders zijn de eerste en laatste letters hetzelfde. Strip ze van het touwtje en bepaal of het touwtje dat overblijft een palindroom is. Neem het antwoord voor deze kleinere string en gebruik het als het antwoord voor de originele string en herhaal vanaf 1.

De enige manipulatie van de tekenreeks is het veranderen van de tekenreeks in hoofdletters, zodat je zoiets als ‘XScsX’ kunt invoeren


Antwoord 9

controleer deze voorwaarde

String string=”//some string…//”

controleer dit…
if(string.equals((string.reverse())
{
het is palindroom
}


Antwoord 10

public static boolean istPalindrom(char[] word){
int i1 = 0;
int i2 = word.length - 1;
while (i2 > i1) {
    if (word[i1] != word[i2]) {
        return false;
    }
    ++i1;
    --i2;
}
return true;
}

Antwoord 11

import java.util.Scanner;
public class FindAllPalindromes {
static String longestPalindrome;
public String oldPalindrome="";
static int longest;
public void allSubstrings(String s){        
    for(int i=0;i<s.length();i++){
        for(int j=1;j<=s.length()-i;j++){
            String subString=s.substring(i, i+j);  
            palindrome(subString);             
        }
    }
        }   
public void palindrome(String sub){
    System.out.println("String to b checked is "+sub);
    StringBuilder sb=new StringBuilder();
    sb.append(sub);     // append string to string builder 
    sb.reverse();        
    if(sub.equals(sb.toString())){                        // palindrome condition 
        System.out.println("the given String :"+sub+" is a palindrome");
        longestPalindrome(sub);
    }
    else{
        System.out.println("the string "+sub+"iss not a palindrome");
    }
        }
public void longestPalindrome(String s){
            if(s.length()>longest){                 
        longest=s.length();
        longestPalindrome=s;
    }
    else if (s.length()==longest){    
        oldPalindrome=longestPalindrome;
        longestPalindrome=s;
    }
}
public static void main(String[] args) {
FindAllPalindromes fp=new FindAllPalindromes();
    Scanner sc=new Scanner(System.in);    
    System.out.println("Enter the String ::");
    String s=sc.nextLine(); 
    fp.allSubstrings(s);      
    sc.close();
    if(fp.oldPalindrome.length()>0){
    System.out.println(longestPalindrome+"and"+fp.oldPalindrome+":is the longest palindrome");  
    }
    else{
        System.out.println(longestPalindrome+":is the longest palindrome`````");
    }}
}

Other episodes