如何用Java来判断回文数?

public class  palindrome  {
    //算法
    public static boolean isPalindrome(String str)     
    {
        SqStackClass<Character> st = new SqStackClass();    //建立一个顺序栈
        int n = str.length();
        int i = 0;
        while (i < n / 2)                    //将str前半字符进栈
        {
            st.push(str.charAt(i));
            i++;                        //继续遍历str
        }
        if (n % 2 == 1)                        //n为奇数时
            i++;                        //跳过中间的字符
        while (i < n)                        //遍历str的后半字符
        {
            if (st.pop() != str.charAt(i))
                return false;            //若str[i]不等于出栈字符返回false
            i++;
        }
        return true;                    //是回文返回true
    }

    public static void main(String[] args) {
        System.out.println("测试1");
        String str = "abcba";
        if (isPalindrome(str))
            System.out.println(str + "是回文");
        else
            System.out.println(str + "不是回文");

        System.out.println("测试2");
        str = "1221";
        if (isPalindrome(str))
            System.out.println(str + "是回文");
        else
            System.out.println(str + "不是回文");
    }
}

 

leetcode上有原题:https://leetcode-cn.com/problems/palindrome-number/




public class palindrome {
    //算法
    public static boolean isPalindrome(String str)     
    {
        for(int i=0;i<str.length()/2;i++){
            if(str.charAt(i)!=str.charAt(str.length()-i-1)){
                return false;
            }
        }
        return true;
    }
 
    public static void main(String[] args) {
        System.out.println("测试1");
        String str = "abcba";
        if (isPalindrome(str))
            System.out.println(str + "是回文");
        else
            System.out.println(str + "不是回文");
 
        System.out.println("测试2");
        str = "1221";
        if (isPalindrome(str))
            System.out.println(str + "是回文");
        else
            System.out.println(str + "不是回文");
    }
}

可以试试这个效果

思路:
如果是负数则一定不是回文数,直接返回 false
如果是正数,则将其倒序数值计算出来,然后比较和原数值是否相等
如果是回文数则相等返回 true,如果不是则不相等 false
比如 123 的倒序 321,不相等;121 的倒序 121,相等

代码:

class Solution {
    public boolean isPalindrome(int x) {
        if(x < 0)
            return false;
        int cur = 0;
        int num = x;
        while(num != 0) {
            cur = cur * 10 + num % 10;
            num /= 10;
        }
        return cur == x;
    }
}

如果帮助请点以下采纳,谢谢!


public static boolean isPalindrome(String str){
        String reverse = new StringBuffer(str).reverse().toString();
        return str.equals(reverse);
    }

将原字符串转化为stringbuffer然后调用reverse方法,最后转化为字符串toString和原字符串比较,相等就是回文字符串