java语言判断一个数字是否为回文数字

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121
输出: true

示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

进阶:

你能不将整数转为字符串来解决这个问题吗?

解法一:使用字符串反转,比较反转前后的字符串是否相等

class Solution {
    public boolean isPalindrome(int x) {
        String str = String.valueOf(x);
        final StringBuilder builder = new StringBuilder(str);
        if(builder.reverse().toString().equals(str)){
            return true;
        }
        return false;
    }
}

解法二:不使用字符串,采用list存储int各个位置上的变量置,然后从list两端向中间比较数值是否相等

class Solution {
    public boolean isPalindrome(int x) {
        if(x<0) return false;
        List list=new ArrayList();
        while(x/10!=0){
            list.add(x%10);
            x=x/10;
        }
        list.add(x);
        for(int i=0;i<list.size()/2;i++)
        {
            if(list.get(i)!=list.get(list.size()-i-1)) return false;
        }
        return true;
    }
}

两种方法的耗时相近~

原文地址:https://www.cnblogs.com/raychou1995/p/10380944.html

时间: 2024-10-29 13:00:46

java语言判断一个数字是否为回文数字的相关文章

判断一个数字是否是回文数字,如果是则打印出100以内的回文数字,若不是只给出提示信息。

回文数字指的是什么呢?什么是回文数字呢? 回文数字的特征是:一组数字,从左读和从右读都是一样的,比如:123.123321.12345654321 public class HuiWenTest{    public static void main(String[] args)    {        Scanner sc = new Scanner(System.in); try        {            System.out.println("请输入你要判断的数字: &quo

判断一个整数是否是回文数C++实现 leetcode系列(九)

判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 . 从右向左读, 为 121- .因此它不是一个回文数. 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 .因此它不是一个回文数. 这道验证回文数字的题如果将数字转为字符串,就变成了验证回文字符串的题,没啥难度了,我们就直接来做follow up吧

判断一个字符串是否为回文-链队(新建,进队,出队),链栈(新建,进栈,出栈)

回文:字符对称排列的字符串,例如ABCBA 思路:根据队:先进先出和栈: 先进后出的原则,进行比较出队和出栈的字符是否相等.如果相等,则为回文. 创建控制台应用程序. 1 #region 字符节点类 2 class CharNode 3 { 4 public char Char //字符 5 { 6 get; 7 set; 8 } 9 public CharNode Next //下一节点 10 { 11 get; 12 set; 13 } 14 public CharNode(char Cha

判断一个整数是否为回文数 Check if a number is palindrome

一种方法是先翻转当前数,然后把它和原数比较(略) 另一种是递归方法,借用一个复制数,对原数递归,使之翻转,然后配合复制数比较 package recursion; public class Check_if_a_number_is_palindrome { public static void main(String[] args) { int num = 121321; System.out.println(check(num)); num = 12321; System.out.printl

回文指的是一个字符串从前面读和从后面读都一 样,编写一个算法判断一个字符串是否为回文。

回文指的是一个字符串从前面读和从后面读都一 样,编写一个算法判断一个字符串是否为回文. 要求: 1)采用链栈实现算法: 2)从键盘输入一个字符串,输出判断结果. #include"stdio.h" #include"stdlib.h" typedef char ElemType; typedef struct stnode { ElemType data; struct stnode *next; }StNode, *LinkStack; int huiwen(ch

LeetCode—Palindrome Number 数字是否是回文数字

Determine whether an integer is a palindrome. Do this without extra space. 检测当前数字是否是回文数字,同时不能增加额外的内存空间,这里一个注意的点就是 负数 都不可能是回文数字 然后是检测出来每一位数字进行比较 代码还是写得比较繁琐,主要的一个点就是数字的位数是基数位和偶数位的时候处理的过程是不同的 class Solution { public: int GetH(int x,int num)//获得对应位置的数字 {

判断一个整数是否是回文

回文指第一个字符和最后一个字符相同,第二个字符与倒数第二个字符相同,以此类推.回文可以是“1221”的形式,也可以是“121”的形式:单个数字也是回文.这里定义负整数不是回文. 第一种做法是把正整数转换成字符串,存储在数组中,分别从左向右和从右向左遍历数组,判断是否是回文.这种方法的缺点是需要使用额外的存储空间. 第二种做法是从个位数开始,依次取出来每一个数,计算逆序后的整数是否与原整数相等.这种做法可能会有溢出的情况发生.为什么?:) 第三种做法是取出首尾数字比较是否相同,如果相同,去掉首尾数

C实例--判断一个字符串是否是回文数

回文是指顺读和反读内容均相同的字符串,例如"121","ABBA","X"等.本实例将编写函数判断字符串是否是回文. 引入两个指针变量,开始时,两个指针分别指向字符串的首末字符,当两个指针所指字符相等时,两个指针分别向后和向前移动一个字符位置,并继续比较,直到两个指针相遇,说明该字符串是回文,如果比较过程中发现两个指针指向的字符不相等,则判断该字符串不是回文. 下面是代码的实现部分: #include <stdio.h> #inclu

leetcode_判断一个整数是否是回文数C++

小弟不才,有错误之处,麻烦指出.谢谢. 判断一个数是否是回文数. 方法一:主要思路是把原本的数字(x)拆分开,组成一个数字(y),然后判断x==y. class Solution { public: bool isPalindrome(int x) { int i=0; int j=0; int k=0; if (x < 0) {//判断负数 return false; } if(x>=0&&x<10){//2,3,5,等都是回文数 return true; } else