博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Palindrome Number
阅读量:5007 次
发布时间:2019-06-12

本文共 1767 字,大约阅读时间需要 5 分钟。

题目链接:https://oj.leetcode.com/problems/palindrome-number/

 

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

 

针对本题可能存在的疑惑

1)负数是否属于回文(例如-1)?

暂定负数不为回文。

 

解题思路:

方法一:

1)将输入数字表示成字符串

缺点:违法不能运用额外条件的限制

1     public boolean isPalindrome(int x){ 2         if(x < 0){ 3             return false; 4         } 5         String num = String.valueOf(x); 6         int i = 0; 7         int j = num.length() - 1; 8         while(i < j){ 9             if(num.charAt(i) != num.charAt(j)){10                 return false;11             };12             i++;13             j--;14         }15         return true;16     }

时间复杂度:O(N),空间复杂度:O(N)

 

方法二:

1)将输入数字逆转

2)将 逆转后的数字与原数字进行对比,是否相同

缺点:若反转后的数字发生溢出将发生错误

1     public boolean isPalindrome(int x){ 2         if(x < 0){ 3             return false; 4         } 5         int reverse = reverse(x); 6         if(reverse == x){ 7             return true; 8         } 9         return false;10     }11     12     private int reverse(int num){13         int result = 0;14         while(num != 0){15             result = result * 10 + num % 10;16             num /= 10;17         }18         return result;19     }

时间复杂度:O(N),空间复杂度:O(1)

 

方法三:

从最头和最尾开始,依此向中间进行比较:

若比较的两个数不同,返回false

若比较的两个数相同,去除头尾数字,继续比较 

1 public boolean isPalindrome(int x){ 2         if(x < 0){ 3             return false; 4         } 5         int div = 1; 6         while(x / div >= 10){ 7             div *= 10; 8         } 9         while(x!=0){10             int l = x / div;11             int r = x % 10;12             if(l != r){13                 return false;14             }15             x = (x % div) / 10;16             div /= 100;17         }18         return true;19     }

时间复杂度:O(N),空间复杂度:O(1)

 

转载于:https://www.cnblogs.com/momo-fun/p/5783796.html

你可能感兴趣的文章
10 模版继承和页面之间的调用
查看>>
C++:this指针的简单理解
查看>>
利用python将文本文件导入数据库时,报错:Duplicate entry '...' for key 'PRIMARY'
查看>>
实验八
查看>>
Linux下nc传输文档
查看>>
设计模式
查看>>
使用IDEA整合SSM框架
查看>>
shell输出输入流常用符号解释
查看>>
1.线程生命周期
查看>>
border_mode
查看>>
printf中的short int, int, long int和long long int
查看>>
Java构造方法、重载及垃圾回收
查看>>
.Net Core AES加密解密
查看>>
Spring Quartz实现任务调度
查看>>
python | 桶排序、冒泡排序、选择排序、去重
查看>>
两个Html页面之间值得传递
查看>>
EasyUI datagrid 的多条件查询
查看>>
Mac升级bash到最新版本
查看>>
利用vagrant打包系统--制作自己的box
查看>>
美女与硬币问题
查看>>