回文数

补充:

回文就是对称的美。有回文句,比如:“蜜蜂酿蜂蜜。”
还有回文诗,比如:“人过大佛寺,寺佛大过人。”
回文数:如: 121,12321
回文算式:如:12 * 42 = 24 * 21

题目:

  • 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
  • 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。

示例 1:
输入:x = 121
输出:true

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

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

示例 4:
输入:x = -101
输出:false

解答:

方法一:通过字符串的字符数组,判断对称性

package palindrome;
//回文数练习的方法一
public class Test1 {/*通过字符串的字符数组,判断对称性*/public boolean isPalindrome(int x) {String str = String.valueOf(x);//将int类型转化成字符串char[] array = str.toCharArray();//将字符串转化为char数组for (int i=0;i<array.length/2;i++){//循环遍历数组的一半//循环判断数组第一个值与最后一个值是否相等if (array[i] != array[array.length-1-i]){return false;}}return true;}public static void main(String[] args) {Test1 test1 = new Test1();System.out.println(test1.isPalindrome(12321));}
}

控制台输出结果为:

方法二:通过翻转,判断是否为回文数

package palindrome;
/*通过翻转判断是否为回文数*/
public class Test2 {public boolean isPalindrome(int x) {String str = String.valueOf(x);//调用string的方法,将int类型转化成字符串//调用stringBuilder的翻转方法String value = new StringBuilder(str).reverse().toString();if (str.equals(value)){//判断原先的值和翻转过来的值是否相等return true;}return false;}public static void main(String[] args) {Test2 t = new Test2();System.out.println(t.isPalindrome(12421));}
}

控制台输出的结果为:

方法三:通过数学公式判断对称性

package palindrome;
//用数学公式判断对称性
public class Test3 {/**以1221这个数字来举例子。*1)首先要获取它的最高位(1221/1000=1)和最低位(1221%10=1)* 2)获取到最高位和最低位进行比较。然后去掉最高位(1221%1000=221)和最低位(221/10=22),循环比较。* 3)再次获取22这个值的最高位(22/10=2)与最低位(22%10=2)进行比较是否相等。*  */public boolean isPalindrome(int x) {if (x<0){//x的值小于0,不符合题目要求return false;}int bit = (int)Math.log10(x);//获取x值的位数int div = (int)Math.pow(10,bit);//根据x值的位数获取10的几次方幂while (x>0){//对x的值循环判断,当x的值小于等于0时,说明该值已经循环完毕了int left = x/div;//获取最高位的值int right = x%10;//获取最低位的值if (left != right) {//判断最高值与最低值是否相等return false;}x = (x % div) / 10;//去掉最高位和最低位//再次获取最高位的时候,是不同的。//如上的注释中:去掉最高位的时候1000-->10//10的幂次降低了:1000/100=10div = div/100;}return true;}public static void main(String[] args) {Test3 t = new Test3();System.out.println(t.isPalindrome(12421));}
}

控制台输出如下图所示:

留言:欢迎小伙伴们的评论哈 ~

LeetCode_回文数(三种解法-Java)相关推荐

  1. jsp判断字符串相等_最长回文字符串三种解法

    先解释一下什么是回文字符串,比如说字符串"aba",无论是从先往后读取还是从后往前读取,结果都是一样的.当给定很长的字符串时,如何快速获取到最长的回文字符串,这也是大厂比较常见的算 ...

  2. 判断一个数是否为回文数(三种方法,详细注解)

    题目要求: 给你一个整数 x ,如果 x 是一个回文整数,返回 true :否则,返回 false . 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.例如,121 是回文,而 123 ...

  3. 洛谷回文数c语言,【普及-】洛谷P1015:回文数 一种解法

    解法 这里考虑到进制的问题,需要把所输入的数字作为字符串(数组名为origin,16进制为大写字母),然后通过转换化为一个个的十进制数位,作为数组的数据元素,这样,在判断是否回文的时候直接从数组两边取 ...

  4. Java判断回文数(两种方式)

    Java判断回文数(两种方式) 回文数是一个非常特殊的数,它从左边读和从右边读是一样的.例如12321 判断方式有两种. 方式一:对该数字进行分解,然后一一比对,拆解成 1 2 3 2 1,然后第一位 ...

  5. Java(回文数--一种比较简单的写法)

    回文数.编写一个Java应用程序.用户从键盘输入一个1-99999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数.回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如121.23 ...

  6. Java实现回文数四种方法

    干货分享 | 打印回文数的四种方法!! 本文提供了四种方法来打印回文数,大家可以根据题目的要求(如:时间复杂度.运行时间.内存等限制条件)来选取合适的方法.如果题目要求打印的回文数较大,我们可以选择将 ...

  7. java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...

  8. 最长回文子串-三种DP实现

    最长回文子串 https://leetcode-cn.com/problems/longest-palindromic-substring/ 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 ...

  9. 回文数的判断(JAVA)

    题目概述: 编写程序:判断给定的字符串是否为回文字符串.回文字符串"从前向后读"和"从后向前读"都相同 分析: 首先要判断什么样的形式是回文字符串.根据题意,q ...

  10. 判断整数是否为回文的三种方式

    第一种: 将整型转为char型数组两两进行判断 public static boolean judgePalindrome(int n){char[] items=String.valueOf(n). ...

最新文章

  1. 记录win10快捷键
  2. MySQL - mysqldump多种方式实现数据迁移
  3. 安装phpstudy之后发现80端口被占用
  4. 你都知道么?Android中21种drawable标签大全
  5. MySQL中有外键时数据表的删除方法
  6. Java连接SQLite数据库
  7. Apache OpenOffice 漏洞使数千万用户易受代码执行攻击
  8. ACM-ICPC 2018 南京赛区网络预赛 B The writing on the wall(暴力)
  9. max点缓存烘焙帧_3DMAX怎么进行点缓存?
  10. es 按条件查询数据总条数
  11. coj #10066新的开始(最小生成树)
  12. 达梦数据库的服务启动
  13. 多重共线性:python中利用statsmodels计算VIF和相关系数消除共线性
  14. 笔记 09-集合(HashSet HashMap TreeMap) 练习
  15. pyqt 打开并显示excel表单
  16. 尚硅谷和黑马java,全网首发!
  17. A - 非提的救赎 Fzu-2190 (单调栈)
  18. 编写Makefile:编译当前文件夹以及子文件夹下所有的ccpp文件并生成可执行文件
  19. 打印后台程序没有运行,怎么办?
  20. IE浏览器的这个代理服务总是被自动勾选怎么办,取消之后还是会被自动勾选!!!!!!!!!!!!(暂时找到“凶手了”)

热门文章

  1. mybatis之 trim prefix=( suffix=)
  2. linux udev 禁用u盘,udev自动挂载U盘
  3. 读书笔记:《少有人走的路1----心智成熟的旅程》
  4. 聊聊龙芯Java开源
  5. MacBook Air下载easyconnect软件后双击打不开后发生的问题
  6. 2018/7/9日~年中总结
  7. 完美发布带摘要的dedecms幻灯片代码
  8. 《如何阅读一本书》章节要点整理
  9. 初窥 Python 的 import 机制
  10. 引入Flutter module,执行flutter pub get提示:XXX using an older version of the Android plugin API