题目
判断一个整数是否回文数,不要使用额外的内存空间。
难度:容易
编程语言:C++
分析
程序框架为:
|
|
我的思路是,从个位开始,把 n 的逐个数位通过模运算取出来,低位不断乘以 10 升至高位,再判断两个数是否相等。假设 n = 12321,那么:
- m = 0
- 12321 % 10 = 1,12321 / 10 = 1232,m = m * 10 + 1 = 1
- 1232 % 10 = 2,1232 / 10 = 123,m = m * 10 + 2 = 12
- 123 % 10 = 3,123 / 10 = 12,m = m * 10 + 3 = 123
- 12 % 10 = 2,12 / 10 = 1,m = m * 10 + 2 = 1232
- 1 % 10 = 1,1 / 10 = 0,m = m * 10 + 1 = 12321
- 结束循环,因为 m == n,所以 n 是回文数。
- 注意:负数不是回文数。
代码如下:
|
|
提交到 Leetcode,Accepted! :) 运行时间为 102ms。