1、问题

Determine whether an integer is a palindrome. Do this without extra space.

click to show spoilers.

Some hints:

Could negative integers be palindromes? (ie, -1)

If you are thinking of converting the integer to string, note the restriction of using extra space.

You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case?

There is a more generic way of solving this problem.

2、分析

判断一个整数是否为回文数,不要用额外的空间。

负数可以是回文数吗?(不可以)

如果你想用整数转为字符串,注意不可以使用额外的空间。

你也可以尝试反转一个整数,但是要考虑整数溢出的问题。

3、正解

class Huiwenshu {public static void main(String[] args) {boolean b1 = isPalindrome(5);boolean b2 = isPalindrome(-10);boolean b3 = isPalindrome(200);boolean b4 = isPalindrome(12321);System.out.println(b4);}static boolean isPalindrome(int x) {int res = 0;//定义反向数if(x<0 || x!=0 && x%10==0){//当x小于0,或者x是10的整数倍时,不是回文数return false;}while(x > res){//只要正向剩下的数大于反向得到的数,就继续判断res = res *10 + x%10;//反向得到的数x = x/10;//正向剩下的数}return(res == x)||(res/10 == x);//偶数位时两者相等,奇数位时res/10==x}
}

4、第一次错误思路:

2332,把最低位移到最高位,移4次会得到2332,判断改变前后是否相等。但是!所有数都可以满足。。。

不过其中也学习到一些细节:

(1)Java中求幂:double d = Math.pow(double a,double b);

(2)强制转换:int  i =(int)d;

//方法是错误的
class Palindrome {public static void main(String[] args) {boolean b = isPalindrome(123);System.out.println(b);}public static boolean isPalindrome(int x) {if(x<0){return false;}int n = 1;//获取位数int wei = x;while(wei>10){wei = wei/10;//改变了x的值n++;   }System.out.println("x="+x);int temp = x;for(int i=1;i<n;i++){temp = temp% 10 * (int)Math.pow(10,n-1) + temp/10;System.out.println("temp="+temp);}//if(x==1)//   System.out.println(temp);if(temp == x)return true;elsereturn false;}
}

5、第二次错误解法(AC,但是题目说到了不要用整数转字符串)

用栈实现整数的反转,且不会溢出,但是不符合要求。

import java.util.Stack;
//利用栈实现回文数的判断
class Palindrome2 {public static void main(String[] args) {int x = 12121;boolean b = isPalindrome(x);System.out.println(b);}public static boolean isPalindrome(int x) {if(x<0){return false;}String in = x+"";//x转为字符串char [] arr = in.toCharArray();//字符串转为字符数组Stack<String> st = new Stack<String>();//创建一个String类型的栈for(int i = 0;i<arr.length;i++){st.push(arr[i]+"");//字符进栈}String out = "";//出栈序列转为字符串while(!st.isEmpty()){out = out + st.pop();//字符出栈并连接}int res = Integer.parseInt(out);//字符串转为整数return res == x;}
}

6、利用字符串的反转功能

 static boolean isPalindrome2(int x){//利用字符串的反转if(x<0 || x!=0 && x%10==0){return false;//此时不能字符串反转}StringBuffer sb = new StringBuffer(x+"");sb.reverse();//反转System.out.println(sb.toString());System.out.println(x+"");return sb.toString().equals(x+"");}

注意最后比较时,不能用==(比较的是地址),要用equals(内部重写了,比较的是值)。

LeetCode--palindrome-number回文数相关推荐

  1. [leetcode] Palindrome Number 回文数判断

    Determine whether an integer is a palindrome. Do this without extra space. 题目大意:略 bool isPalindrome( ...

  2. 【LeetCode】Palindrome Number(回文数)

    这道题是LeetCode里的第9道题. 题目说的: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: ...

  3. LeetCode(9.回文数)JAVA

    LeetCode(9.回文数) 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输 ...

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

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

  5. LeetCode 09:回文数(Java实现)

    LeetCode 09:回文数(Java实现) 题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1:输入: 121 输出: true 示例 2:输 ...

  6. LeetCode实战:回文数

    题目英文 Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same ...

  7. LeetCode(JavaScript实现)——回文数

    文章目录 1.题目 2.题解 2.1.将整数转换为字符串解法 实现方法一 实现方法二: 1.题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: ...

  8. LeetCode Algorithm 9. 回文数

    9. 回文数 Ideas 算法:迭代 数据结构:一个变量就OK 思路: 首先负数肯定都不是回文数,所以遇到负数可以直接return false: 针对最后一位是0的情况,因为0不能作为开头,所以只要最 ...

  9. leetcode系列--9.回文数

    leetcode系列–第9题.回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true :否则,返回 false . 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.例如,1 ...

  10. Python 算法 入门到精通 - LeetCode - 3 :回文数

    本系列适合跟我一样新入门的同学,我会从最基础的方法一步一步优化,所有代码都可以直接复制运行,希望有所帮助.如果喜欢可以订阅本系列(基于python3) 先看题目: 给你一个整数 x ,如果 x 是一个 ...

最新文章

  1. 英特尔专家告诉你 信息时代如何掌控数据安全(附视频PPT)
  2. 从天气项目看Spring Cloud微服务治理
  3. js html保存json,如何在json文件中存储jQuery或javascript变量?
  4. 进制在c语言中的作用,C语言中的进制是什么意思?
  5. 跨链Cosmos(1) 网络拓扑
  6. Angular NgModule里定义的注解和NgModuleRef$1运行时
  7. How to change the background color of button in Footer area
  8. redis——旧版复制
  9. java7 nio2 新特性_JDK7新特性,你知道几个?
  10. poj 1182 食物链的一种解法(详解),非向量法
  11. mysql hdfs_MySQL数据库与HDFS的实时数据同步
  12. 阿里云rds mysql 并发_干货 | 浅析RDS MySQL 8.0语句级并发控制-阿里云开发者社区
  13. Android应用程序键盘(Keyboard)消息处理机制分析(11)
  14. 高彩色显示图标(转)
  15. Android多图分享至微信
  16. python图形编程复选按钮和单选按钮详细说明_python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例...
  17. 深度学习之facenet人脸识别网络介绍
  18. Microsoft Word 论文编排技巧
  19. 关于微信开发者没有上传按钮的问题
  20. 《用户至上:用户研究方法与实践(原书第2版)》一1.1 什么是用户体验

热门文章

  1. python3多线程协程_python3-----多进程、多线程、多协程
  2. [渝粤教育] 西南科技大学 高速公路 在线考试复习资料
  3. [渝粤教育] 中国地质大学 金融保险业会计 复习题 (2)
  4. 【渝粤教育】电大中专新媒体营销实务 (10)作业 题库
  5. 【渝粤题库】陕西师范大学210032学前心理学 作业(专升本)
  6. 【渝粤题库】陕西师范大学202831 程序设计 作业(专升本)
  7. 【渝粤题库】陕西师范大学152212 政府绩效管理 作业(专升本)
  8. linux 下对u盘分区吗,linux对中毒u盘分区和格式化
  9. 图之DFS与BFS的复杂度分析
  10. 中文转化成拼音_五笔已经淘汰,拼音到达瓶颈,百度重拳出击,全新输入方式来袭!...