二、解题思路给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:输入:x = -123
输出:-321来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
public int reverse(int x) { long a=0; while(x!=0){ a*=10; a+=x%10; x=x/10; } if((int)a!=a) return 0; return (int)a; }
坚持!keep going!1)题目说不能用64位储存,那我们就偏用64位long型存储,然后后面再转换为int,如果转换前后数值不同就return 0
2)程序中算法为:先对这个数除10,取余数和商,将余数储存乘10,再对商取余,不断循环至商小于10
如:456 ->a*10=0 456/10=45……6 把6加到变量a中 a=6
->a*10=60 45/10=4……5 把5加到变量a=65
->a*10=650 4/10=0……4 把4加到变量a=654
此时商为0跳出循环
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)