这是我参与8月更文挑战的第17天,活动详情查看:8月更文挑战
相关文章
LeetCode刷题汇总:LeetCode刷题
一、题目描述
给你一个整数 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
-
提示:
-231 <= x <= 231 - 1
- 第一眼看过去,这玩意不就是字符串反转嘛!
- 直接反转过来,判断是否一致即可。
- 前提条件是小于0或者大于2147483647都返回false即可。
- 简单粗暴!
三、AC 代码
-
字符串反转解法:
class Solution { public boolean isPalindrome(int x) { //首先判断是否在范围之内 if(x<0 || x>2147483647){ return false; } String str = String.valueOf(x); //直接将字符串反转 String flip = new StringBuffer(String.valueOf(x)).reverse().toString(); //如果相等,证明是符合条件即为回文数,反之不是 if (str.equals(flip)){ return true; } return false; } }
- 看到这个效率真的不忍直视呀!
- 莫得事!下面我们来个高级的解法!
-
双指针破解法:
class Solution { public boolean isPalindrome(int x) { String s = String.valueOf(x); //i是头,j是尾 int i=0,j=s.length()-1; //能整个循环结束的说明是回文数 while(i<j){ if (s.charAt(i)!=s.charAt(j)){ return false; } i++; j--; } return true; } }
- 从结果可以看出,明显比原先的效率高了很多!
- 这种思路就是循环,开头跟结尾的比较即可。
四、总结
**路漫漫其修远兮,吾必将上下求索~ **如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~hahah