LeetCode 9. 回文数

上一篇博客:LeetCode 7.整数反转

 写在前面:大家好!我是ACfun,我的昵称来自两个单词Acceptedfun。我是一个热爱ACM的蒟蒻。最近萌生了刷LeetCode的想法,所以我打算从LeetCode简单的题目开始做起,攻陷LeetCode。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭!
用知识改变命运,用知识成就未来!加油 (ง •̀o•́)ง (ง •̀o•́)ง

原题链接:LeetCode 9. 回文数

题目信息

题目描述

 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例

示例 1

输入: 121
输出: true

示例 2

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

进阶:

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

题解

解题思路

 因为负数一定不是回文数,所以在开始的时候我们先判断一下 x 是否为负数,如果为负数那么直接 return false;结束。如果不是负数那么我们将 x 利用 对 10取模 将其每一位数字拆开。然后依次比较对应位置上的数字是否相同,只要遇到不同那么就直接 return false;结束函数,否则就继续进行比较,如果比较完之后还没有出现对应位置数字不相同的情况,那么就 return true;

解题代码

class Solution {
public:
    bool isPalindrome(int x) {
        int q[100] = {0};
        long n = x, i = 0;
        if (n < 0) {
            return false;
        }
        while (n) {
            q[i] = n % 10;
            n /= 10;
            i++;
        }
        int k = 0;
        for (int j = i; j > i / 2; j--) {
            if (q[k] != q[i - 1 - k]) return false;
            k++;
        }
        return true;
    }
};

提交情况

提交情况


未完待续,持续更新中……
废话少说 上号!

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页