力扣题解之:回文数

2021-03-01 10:04:44  卢浮宫  版权声明:本文为站长原创文章,转载请写明出处


一、题目


    给你一个整数x,如果x是一个回文整数,则返回true,否则返回false。
    回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

    例如,121 是回文,而 123 不是。

      提示:

    -231 <= x <= 231 - 1 

  进阶:你能不将整数转为字符串来解决这个问题吗?


二、解题思路


    2.1、整数比对解题思路

        ① 首先负数因为符号的原因肯定不是一个回文数,所以我们可以直接返回false

        ② 关于数字的每一位的单独处理,我们可以直接在上一篇文章中有过印象

            力扣解题之:整数翻转

            我们只需使用模运算来获取每一个整数位数值来进行先关操作即可。

        ③ 我们取到每一个的整数位,然后生成一个新的整数与入参的证书进行比对即可


    2.2、字符操作解题思路

        ① 我们把x作为一个字符,然后逐次做截取工作。

        ② 最终我们会拼接处一个新的字符串

        ③ 两个字符串进行比较即可打出结果


    PS:因为是回文,前面等于后面,是不是说就是我们比对一半就可以了呢?


三、附上两个解题代码


    3.1、整数处理


    class Solution {
public boolean isPalindrome(int x) {
if(x < 0){
return false;
}
int dataVal = x;
int dataRlt = 0;
while (dataVal != 0){
dataRlt = dataRlt * 10 + dataVal % 10;
dataVal = dataVal / 10;
}
return dataRlt == x;
}
}


    3.2、字符串处理


    class Solution {
public boolean isPalindrome(int x) {
if(x < 0){
return false;
}
String str = String.valueOf(x);
int beginIndex = 0;
int endIndex = str.length();
while (beginIndex <= endIndex){
String beginStrTmp = str.substring(beginIndex,beginIndex + 1);
String endStrTmp = str.substring(endIndex - 1, endIndex);
if(beginStrTmp.equals(endStrTmp)){
beginIndex ++;
endIndex --;
}else{
return false;
}
}
return true;
}
}


    更多精彩请持续关注:guangmuhua.com



最新评论: