LeetCode刷题-9.回文数
题目链接:9. 回文数
¶题解:
虽然简单,但是还是有可以优化的地方!
¶题目简述:
给一个 int 类型的数,判断是不是回文数!
注意:-121 反转后 为 121- 不是回文数。
¶题解一:循环
嗯,太简单了,不写解释了!
注意一点:int
正序可能没溢出,但是反转过来就不一定没有溢出,所以,要用 long long
来存储一下!
¶AC代码:
1 |
|
¶题解二:循环优化
由于是回文串,那么如果是的话,他的前半部分和后半部分是完全一样的,所以我们可以只处理一半即可得到答案。
- 如果为负数和末尾有0一定不是回文数。(除了 0)
- 如果后半部分等于前半部分即是回文数,否则不是:
- 奇数:
s == x / 10
- 偶数:
s == x
- 奇数:
- 退出条件
s <= x
,大于就超过了中点位置!
¶AC代码:
1 |
|
¶题解三:使用 string
to_string
:是C++11
支持的。s.rbegin() 和 s.rend()
:返回一个逆向迭代器,分别指向字符串的最后一个字符和起始位置(第一个字符前面一个字符位置)- 也可以使用
reverse()
进行反转,不过他没有返回值,而是直接将原串都修改了,不推荐使用。
¶AC代码:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小牛博客!
评论