嗨,大家好,我是袁厨(因为酷爱做饭,所以自己考取了厨师证)。之前一直看大家写的博客,学到了很多东西。然后最近萌生了自己写的想法,将自己知道的分享给需要的同学。以后每天会为大家分享leetcode精选题目的各种题解和Python, JS, JQ, CSS, PHP, JAVA的一些小Demo。请大家关注我,一起交流学习吧。
9. 回文数
- 题目描述
- 数组法
- 做题思路
- 题目代码
- 字符串法
- 做题思路
- 题目代码
- 数学法
- 做题思路
- 题目代码
- 巧解法
- 做题思路
- 题目代码
- 总结
一个通俗易懂的做题方法就是,将数字的每一位存到数组里,然后利用双指针对数组进行遍历,进而判断是否为回文数。
class Solution {
public boolean isPalindrome(int x) {
//如果为负数,则不是回文数,这里还可以添加一个就是尾数为0的情况.
if(x < 0){
return false;
}
//构建一个动态数组
List<Integer> array = new ArrayList<>();
//将某一位添加到动态数组
while(x > 0){
array.add(x%10);
x/=10;
}
int i = 0;
int j = array.size()-1;
//双指针遍历
while(i<j){
if(array.get(i) != array.get(j)){
return false;
}else{
i++;
j--;
}
}
return true;
}
}
class Solution {
public boolean isPalindrome(int x) {
//如果为负数,则不是回文数,这里还可以添加一个就是尾数为0的情况.
if(x<0){
return false;
}
//将其转化为字符串,注意这个函数的用法
String t = Integer.toString(x);
int i = 0;
int j = t.length()-1;
//双指针遍历
while(i<j){
if(t.charAt(i)!=t.charAt(j)){
return false;
}
else{
i++;
j--;
}
}
return true;
}
}
class Solution {
public boolean isPalindrome(int x) {
if(x<0){
return false;
}
int pro =1;
//这一步用来求第一位的值的除数。比如1001/1000==1,
//我们可以通过这个循环得到1000;
while(x/pro>=10){
pro*=10;
}
System.out.println(pro);
while(x>0){
int first = x / pro;
int last = x % 10;
if(first!=last){
return false;
}
//这里是用来去掉首尾两位的情况
x=(x%pro)/10;
//缩小最大除数,因为是减少两位,所以是除100;
pro/=100;
}
return true;
}
}
class Solution {
public boolean isPalindrome(int x) {
// 这里就需要完全加入尾数为0的情况了,因为靠下面的while不能去除尾数为0的情况
if(x < 0 || (x%10 == 0 && x!=0)){
return false;
}
int renum = 0;
while(x > renum){
//流程图内容
renum = renum * 10 + x % 10;
x/= 10;
}
//位数为奇偶的两种情况
return renum == x || renum/10 == x;
}
}
这个题目算是很经典的题目,应该还有其他方法,如果大家还有其他方法希望大家可以不吝赐教。感谢
作者:LeetCode
链接:https://leetcode-cn.com/problems/rotate-array/solution/xuan-zhuan-shu-zu-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。