用于检查字符串是否为回文的Java方法

我想检查字符串是否是回文。 我想学习一种简单的方法来使用尽可能少的字符串操作来检查相同的方法

使用reverse是过度的,因为您不需要生成额外的字符串,您只需要查询现有的字符串。 以下示例检查第一个和最后一个字符是否相同,然后在字符串内部进一步检查每次检查结果。 一旦s不是回文,它就会返回。

reverse方法的问题在于它预先完成所有工作。 它对字符串执行昂贵的操作,然后逐个字符地检查,直到字符串不相等为止,如果它不是回文,则返回false。 如果你只是一直在比较小字符串,那么这很好,但是如果你想保护自己免受更大的输入,那么你应该考虑这个算法。

 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; } 

对于最少的代码行和最简单的情况

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

这是一个简单的“

 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; } } 

这是一个很好的课程:

 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(); } } 

请享用。

你可以尝试这样的事情:

  String variable = ""; #write a string name StringBuffer rev = new StringBuffer(variable).reverse(); String strRev = rev.toString(); if(variable.equalsIgnoreCase(strRev)) # Check the condition 
  public boolean isPalindrom(String text) { StringBuffer stringBuffer = new StringBuffer(text); return stringBuffer.reverse().toString().equals(text); } 

我想这是检查回文的简单方法

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

我是java的新手,我把你的问题作为挑战来提高我的知识,所以请原谅我,如果这不能很好地回答你的问题:

 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 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. 如果字符串不是字母或只是一个字母,那么它就是一个回文。
  2. 否则,比较字符串的第一个和最后一个字母。
    • 如果第一个和最后一个字母不同,那么该字符串不是回文
    • 否则,第一个和最后一个字母是相同的。 从字符串中剥离它们,并确定剩余的字符串是否是回文。 获取这个较小的字符串的答案,并将其用作原始字符串的答案,然后从1开始重复。

唯一的字符串操作是将字符串更改为大写,以便您可以输入类似’XScsX’的内容

检查这个条件

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

检查这个… if(string.equals((string.reverse()){它是palindrome}

 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; } 
 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;ilongest){ 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`````"); }} }