- 1、整数反转(leetcode no.7)easy
数学">1、整数反转(leetcode no.7)easy数学 - 2、判断回文数(leetcode no.9)easy
数学">2、判断回文数(leetcode no.9)easy数学
1、整数反转(leetcode no.7)easy 数学
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−2, 2 − 1] ,就返回 0。
思路:
用栈?
把整数转化为字符串,再反转字符串?
这两种方式是可以的,但是并不好。
这题主要是一个数学类算法,所以怎么反转?可以去取模,每次以10取模就可以得到最后一个数。而且题目还需要考虑反转之后的整数范围,其实int类型的范围在 -2147483648~ 2147483647 ,那么其实可以提前判断,如果最大数>214748364 就超出范围了;如果最小数< -214748364 也超出了范围;(其实呢:如果我们都知道了int的取值范围,那么它开头的数字肯定是1或者2了,所以下面代码的 result == 214748364 && temp > 7 和 result == -214748364 && temp < -8 可以省略了。
class Solution {public int reverse(int x) {int result = 0;while(x != 0){//每次取末尾数字int temp = x % 10;//判断是否大于最大32位整数if(result > 214748364 || (result == 214748364 && temp > 7)){return 0;}//判断是否小于最小的32位整数if(result < -214748364 || (result == -214748364 && temp < -8)){return 0;}result = result * 10 + temp;x/=10;}return result;}}
2、判断回文数(leetcode no.9)easy 数学
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
