目前令人难以置信的困惑我将如何将用于确定字符串是一个回文的逻辑从main方法转移到名为checkPalindrome的方法中?我的方法应该有一个String参数并返回一个布尔值,但我仍然不确定如何执行此操作。
import java.util.Scanner;
public class PalindromeCheckMethod {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a String: ");
String s = input.nextLine();
boolean isPalindrome = checkPalindrome(s);
String msg = "not a palindrome";
if (isPalindrome) {
msg = "a palindrome";
}
System.out.printf("%s is %s.%n", s, msg);
s = s.toLowerCase();
String resultString = "";
for (int i = 0; i < s.length(); i++) {
if (Character.isLetter(s.charAt(i)))
resultString += s.charAt(i);
}
s = resultString;
int low = 0;
int high = s.length() - 1;
if (high >= 0) {
while (low < high) {
if (s.charAt(low) != s.charAt(high)) {
isPalindrome = false;
break;
}
low++;
high--;
}
}
else {
isPalindrome = false;
}
if (isPalindrome)
System.out.println(s + " is a palindrome. ");
else
System.out.println(s + " is not a palindrome. ");
}
private static boolean checkPalindrome(String s) {
return false;
}
}
答案 0 :(得分:1)
static boolean checkPalindrome(String str)
{
int strEndPoint=str.length()-1;
int strStartPoint=0;
boolean isPalindrome=true;
while(strStartPoint<=strEndPoint)
{
if(str.charAt(strStartPoint)!=str.charAt(strEndPoint))
{
isPalindrome=false;
break;
}
strStartPoint++;
strEndPoint--;
}
return isPalindrome;
}
答案 1 :(得分:0)
好吧,我会使用StringBuilder
并使用类似
static boolean checkPalindrome(final String s) {
StringBuilder sb = new StringBuilder(s);
sb.reverse();
return sb.toString().equalsIgnoreCase(s);
}
但是你当然可以用你的实现替换我的实现(我没有验证你的实现)。要调用该方法(并且可能利用格式化的io),您可以使用类似
的方法public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a String: ");
String s = input.nextLine();
boolean isPalindrome = checkPalindrome(s);
String msg = "not a palindrome";
if (isPalindrome) {
msg = "a palindrome";
}
System.out.printf("%s is %s.%n", s, msg);
}
答案 2 :(得分:0)
为什么你不认为简单。准确地说,字符的镜像是相同的,如果不是,它不是回文。当您穿过阵列的中间而没有找到差异时,它是绝对的回文。看看这个。
int len = str.getLenght();
int i = 0;
do {
if (str.get(i) == str.get(len-1-i))
i++;
else {
print("NOT a palindrome");
break;
}
} while (i < len-1-i) ;
if (i < len-1-i) print("NOT a palindrome");