回文方法的问题

时间:2011-06-09 14:03:23

标签: java

您好我正在尝试写一个回文方法,但结果却是错误的

public static boolean isPalindrome(String input){
    int b=input.length();
    int []array=new int[b];
    for(int i=0;i<array.length;i++){
        array[i]=Integer.parseInt(input);}


        for(int i=0;i<(array.length)/2;i++){
            if(!(array[i]==array[array.length-1-i])){
                    return false;}
        }

        return true;

    }
}

5 个答案:

答案 0 :(得分:4)

如果您将字符串放入StringBuilder,则可以使用.reverse()方法。然后检查2是否相等。

 StringBuilder input = new StringBuilder("helloolleh");
    StringBuilder value = input.reverse();

    if(value.toString().equals(input.toString()){
    //process
    }

答案 1 :(得分:3)

您可以选择更简单的方法来检查回文。

使用StringBuilder类并使用.reverse()方法反转字符串,然后检查回文测试。

StringBuilder value1= new StringBuilder("nitin");
StringBuilder value2 = input.reverse();

if(value1.toString().equals(value2.toString()){
    System.out.println("This is a palindrome string ..");
}

或者你也可以这样走..

public static boolean isPalindrome(String word) {
    int left  = 0;                 
    int right = word.length() -1;  

    while (left < right) {         
        if (word.charAt(left) != word.charAt(right)) {
            return false;          
        }
        left++;                    
        right--;                   
    }

    return true;                   
}

答案 2 :(得分:3)

不确定您使用Integer.Parse()的原因。

尝试这样的事情(主要是遵循问题中的逻辑)

public static boolean isPalindrome(String input) {
    char[] array = input.toCharArray();

    for (int i = 0; i < (array.length) / 2; i++) {
        if (!(array[i] == array[array.length - 1 - i])) {
            return false;
        }
    }

    return true;
}

答案 3 :(得分:3)

你可以使用两个“指针”,一个从字符串的开头开始,一个从结尾开始,然后按相反的方向移动它们,检查字符是否等于;一发现差异就知道你的字符串不是回文;相反,如果你没有发现差异,你就知道字符串是回文:

public static boolean isPalindome(String input) {
    char[] cs = input.toCharArray();
    for (int i = 0, j = cs.length - 1; i < j; i++, j--) {
        if (cs[i] != cs[j])
            return false;
    }
    return true;
}

答案 4 :(得分:0)

import java.util.Scanner;

public class Test_String {

private static boolean IsPalindrome(String s)
{
    StringBuffer str1 = new StringBuffer(s);
    StringBuffer str2 = str1.reverse();

    if(s.equalsIgnoreCase(str2.toString()))
        return true;
    else
        return false;
}

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter a String to be checked as Palindrome ");
String in = scan.nextLine();
    if(IsPalindrome(in))
        System.out.println("\nEntered String is a Palindrome ");
    else
        System.out.println("\nEntered String is NOT a Palindrome ");
}

}