public class Palindrome
{
public static boolean isDoublePalindrome (char[] digits)
{
char[] firstHalf = new char[digits.length/2];
char[] secondHalf = new char[digits.length/2];
for(int a = 0; a < digits.length / 2; a++)
{
firstHalf[a] = digits[a];
System.out.print(firstHalf[a]);
}
for(int b = digits.length / 2; b < digits.length; b++)
{
secondHalf[b] = digits[b];
}
if(digits.length % 2 == 0)
{
for(int i = 0; i < digits.length / 2 - 1; i++)
{
if(digits[i] != digits[digits.length - i - 1])
{
return false;
}
else
{
return true;
}
}
for(int j = 0; j < firstHalf.length / 2 - 1; j++)
{
if(firstHalf[j] != firstHalf[digits.length - j - 1])
{
return false;
}
else
{
return true;
}
}
}
else if(digits.length % 2 != 0)
{
return false;
}
return false;
}
}
这里我将digits[]
作为参数,无论字符数组在哪里,我想将它们分成两半,将前半部分存储到firstHalf,将后半部分存储到secondHalf数组。但是当我调试时,secondHalf没有任何值。请帮忙!!
答案 0 :(得分:0)
首先,小心将数组长度除以2,你可能有一个奇数长度(比另一半长一半)。
如果“数字”是奇数长度会怎样?它仍然可以是回文。
要回答你的问题,在第二个循环中你将值赋值给secondHalf [b],超过它的长度:“digits.length / 2”。您应该从零开始将值分配给secondHalf []。
答案 1 :(得分:0)
这样做的方法
public int reverse(int num) {
int revNum = 0;
while (num > 0) {
int rem = num % 10;
revNum = (revNum * 10) + rem;
num = num / 10;
}
return revNum;
}
实施
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter a number: ");
int num = scanner.nextInt();
System.out.println("Please enter a string: ");
String str = scanner.next();
Palindrome palin = new Palindrome();
int revNum = palin.reverse(num);
if (num == revNum) {
System.out.printf("\n The number %d is a Palindrome ", num);
} else {
System.out.printf("\n The number %d is not a Palindrome ", num);
}
这里回文是主要方法的类名希望我的作品在这方面帮助你。
答案 2 :(得分:0)
如果你很懒,这可能是你的方式:
public static boolean isPalindrome(String s){
String reverse = new StringBuffer(s).reverse().toString();
if(s.equalsIgnoreCase(reverse))
return true;
else
return false;
}
如果你不被允许作弊,这可以帮助你:
public static boolean isPalindrome(String s){
char[] chars = s.toCharArray();
for(int i = 0; i < chars.length / 2; i++){
if(Character.toLowerCase(chars[i]) != Character.toLowerCase(chars[chars.length - 1 - i]))
return false;
}
return true;
}
编辑:对于第二个版本,您也不会遇到忽略字符的问题,因为如果它是一个奇数,那么它将是字符串两边共享的中间字符。