每日算法LeetCode 9 —— 回文数(九十八)

Posted 牛哥不牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日算法LeetCode 9 —— 回文数(九十八)相关的知识,希望对你有一定的参考价值。


题目内容

给你一个整数 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


提示

-2^31 <= x <= 2^31 - 1


题解

首先,这里直接对负数进行剪枝,如果x < 0,那么直接返回0即可。

然后在保证x为整数的情况下,进行如下两种思考:

Part1 进行两个字符串的比较

string s = to_string(x)return s == string(s.rbegin(),s.rend())

Part2 数字翻转并比较

因为题目中没有对数据类型的限制,因此为了防止int类型溢出,采用long long 来存储翻转后的数字,然后进行x == res的比较即可。

我们需要将x中从个位开始抠出来,然后每次*10即可,具体看下方代码。


代码

class Solution {public: bool isPalindrome(int x) { if(x < 0) return false; long long res = 0; int y = x; while(x){ res = res * 10 + x % 10;//x % 10 会取出x的个位数 x /= 10;//x除完之后将x的个位数去掉 }  return y == res; }};


以上是关于每日算法LeetCode 9 —— 回文数(九十八)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode每日一题(2020-06-10):9.回文数

每日一道leetcode:9. 回文数

小Y学算法⚡️每日LeetCode打卡⚡️——8.回文数

9. 回文数(leetcode力扣算法 - java / rust)

9. 回文数(leetcode力扣算法 - java / rust)

leetcode算法9.回文数