LeetCode--palindrome-number回文数

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(内部重写了,比较的是值)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何取消 登录_LSAT | 退考、缺考、取消成绩,各自的区别和流程是怎样的?

专注顶尖法学院JD/LLM申请指导咨询&#xff0c;更多内容请关注联才微信公众号&#xff1a;wisdom-linked排版 | 联才; 编辑 | 联才掐指一算&#xff0c;现在距离6/23亚洲场LSAT考试只剩下15天的时间了&#xff0c;你目前的备考进展如何呢&#xff1f;如果你拿不准是否要去考试&…

gtest 编译、安装和使用

本例以 gtest-1.7.0 为例进行讲解。一、要求&#xff1a;1. 安装 cmake二、编译1. 下载 gtest 源码包&#xff0c;并解压&#xff0c;如&#xff1a;/home/hdc/gtest-1.7.0&#xff1b; 2. 编译 gtest 动态库&#xff0c;进入 gtest-1.7.0 目录&#xff0c;编辑 CMakeLists.tx…

ReentrantReadWriteLock读写锁的使用

类ReentrantLock具有完全互斥排他的效果&#xff0c;即同一时间只有一个线程在执行ReentrantLock.lock()后面的代码。这样虽然保证了线程的安全性&#xff0c;但是效率低下。JDK提供了ReentrantReadWriteLock读写锁&#xff0c;使用它可以加快效率&#xff0c;在某些不需要操作…

idea如何把包变为模块_让我们将包变成模块系统!

idea如何把包变为模块使用构建系统将许多项目分为模块/子项目&#xff08; Maven &#xff0c; Gradle &#xff0c; SBT …&#xff09;&#xff1b; 编写模块化代码通常是一件好事。 将代码分为构建模块主要用于&#xff1a; 隔离代码部分&#xff08;减少耦合&#xff09; …

VS2017无法启动

新安装了VS2017&#xff0c;安装没问题&#xff0c;但是总出现启动时没反应的状况&#xff0c;鼠标双击后转圈&#xff0c;然后就没然后了。。 解决办法&#xff1a; 第一步&#xff1a; 开始-->所有程序-->Microsoft Visual Studio 2017文件夹-->VisualStudio Tool…

gm怎么刷东西 rust_Rust语言:解引用详述,搞不明白这个概念,趁早放弃Rust

Rust是内存安全的&#xff0c;对新手来说&#xff0c;最大的困难是可恶的编译器&#xff0c;在其他语言上面叱咤风云&#xff0c;偏偏被Rust搞到崩溃。所以&#xff0c;大家都戏谑道&#xff0c;Rust是面向编译器编程。和编译器做斗争的过程中&#xff0c;遇到最多的是&#xf…

VS2010中使用gtest简单案例

1、下载googletest代码 https://github.com/google/googletest 2、解压并进入找到msvc文件夹 googletest-master\googletest-master\googletest\msvc 3、打开gtest.sln文件 4、编译gtest和gtest_main工程&#xff0c;生成gtestd.lib和gtest_maind.lib&#xff0c;将这两个静…

记录一次Oracle注入绕waf

这个注入挺特殊的&#xff0c;是ip头注入。我们进行简单的探测: 首先正常发起一次请求&#xff0c;我们发现content-type是76 探测注入我习惯性的一个单引号: 一个单引号我发现长度还是76 我开始尝试单引号&#xff0c;双引号一起: 我失败了长度还是76 一般sql注入输入单引号一…

生成字节码

在这篇文章中&#xff0c;我们将看到如何为我们的语言生成字节码。 到目前为止&#xff0c;我们已经看到了如何构建一种语言来表达我们想要的东西&#xff0c;如何验证该语言&#xff0c;如何为该语言构建编辑器&#xff0c;但实际上我们仍然无法运行代码。 是时候解决这个问题…

Java迭代器contains的问题

功能&#xff1a;ArrayList去除集合中字符串的重复值(字符串的内容相同)&#xff0c;思路&#xff1a;创建新集合方式。 第一种编译运行没问题&#xff0c;第二种写法出错&#xff0c;原因是不可以两次使用it.next()。 错误提示&#xff1a;Exception in thread "main&q…

ad如何镜像器件_使用 Dockerfile 制作镜像

前面几篇文章已经给大家介绍了 Docker 的基本概念&#xff0c;相信大家也会使用 Docker 运行自己想要的容器了。但是只有学会制作镜像&#xff0c;才能将 Docker 应用到我们的项目中去。下面我们就来学习如何使用 Dockerfile 来制作镜像。Dockerfile 是一个文本文件&#xff0c…

centos7.5部署ELk

第1章 环境规划 1.1 ELK介绍 ELK是ElasticSerach、Logstash、Kibana三款产品名称的首字母集合&#xff0c;用于日志的搜集和搜索。 Elasticsearch&#xff1a;是一个开源分布式搜索引擎&#xff0c;提供搜集、分析、存储三大功能&#xff0c;特点是分布式、零配置、自动发…

使用Google Test的一个简单例子

0. 引子 本例是从 gtest-1.5.0 自带的 sample 中的 sample1 改写而来&#xff0c;笔者只添加了一个求 n 的阶层的函数&#xff0c;如下。 void Factorial(int n, int & result ) { result 1; for (int i 1; i < n; i) result * i; } 目的是想测试像这样将返回值放在参…

Java静态方法与非静态方法的泛型

Java中&#xff0c;非静态方法可以使用类的泛型&#xff0c;也可以定义自己的泛型&#xff1b;静态方法由于随着类的加载而加载&#xff0c;不能访问类的泛型&#xff08;因为在创建对象的时候才确定&#xff09;&#xff0c;因此必须定义自己的泛型类型。 详细请参考&#xf…

Android Studio 日志工具

在项目中提供5个方法打印日志 Log.v() 最常见的日志信息 Log.d() 调试信息 Log.i() 用于打印用户操作行为 Log.w()警告潜在风险 Log.e()报错信息 TAG 填入类名就好 msg:要打印的信息 也可以对信息进行过滤 点他弹出自定义的日志过滤器 转载于:https://www.cnblogs.com/feizianq…

jpa加密_使用JPA侦听器的数据库加密

jpa加密最近&#xff0c;我不得不将数据库加密添加到一些字段中&#xff0c;并且发现了很多不好的建议。 建筑问题 最大的问题是建筑。 如果持久性管理器静静地处理您的加密&#xff0c;那么根据定义&#xff0c;您的体系结构将在持久性和安全性设计之间要求紧密而不必要的绑…

同一进程中的线程究竟共享哪些资源

线程共享的环境包括&#xff1a;进程代码段、进程的公有数据(利用这些共享的数据&#xff0c;线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这许多共性的同时&#xff0c;还拥有自己的个性。有了这些…

物联lot是什么意思_什么是物联网,物联网(lOT)简介

什么是物联网物联网(The Internet of Things&#xff0c;简称IOT)是指通过各种信息传感器、射频识别技术、全球定位系统、红外线感应器、激光扫描器等各种装置与技术&#xff0c;实时采集任何需要监控、 连接、互动的物体或过程&#xff0c;采集其声、光、热、电、力学、化 学、…

Python 位操作运算符

&按位与运算符&#xff1a;参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 &#xff0c;二进制解释&#xff1a; 0000 1100|按位或运算符&#xff1a;只要对应的二个二进位有一个为1时&#xff0c;结果位就为1。(a | b) 输出结果 6…

JavaOne 2016后续活动

我很高兴今年参加了JavaOne&#xff0c;我可以用一个词概括一下这一经验&#xff1a;Brilliant。 对于我来说&#xff0c;今年与往年相比有很大不同&#xff0c;因为我在周日有一个演讲要共同演讲&#xff0c;而我剩下的一周时间都可以参加会议。 因此&#xff0c;我了解到在Ja…