题目描述:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123 输出: 321
示例 2:
输入: -123 输出: -321
示例 3:
输入: 120 输出: 21
一. 题目分析
难以程度: 简单
思路: 整数反转较为简单,若不考虑临界溢出状况,基本就没啥考得了。int型数据范围[-2^31,2^31-1],在计算完最终得反转数据后,进行范围判断即可。
二. 代码如下:
C++实现:
1 int Solution::reverseNum(int num) 2 { 3 long rev = 0; 4 while(num) 5 { 6 int pop = num%10; 7 num /= 10; 8 rev = rev*10+pop; 9 if(rev>INT_MAX || rev<INT_MIN) 10 { 11 cout << "reverse result over folw" << endl; 12 rev = 0; 13 break; 14 } 15 } 16 cout << rev << endl; 17 return rev; 18 }
经验小贴士:
1. 学习反转数得一种操作思想, 特别是这句“rev = rev*10+pop; “,最开始自己写得时候,竟然用了一个数组存了每一位得数据,然后再去颠倒乘出最后得结果,简直巨笨了。
2. 调试过程中cout输出char型数据是,输出得是其ascii码,而数值。
3. cout<<*hex<<x; 按照10进制格式输出数据
Python实现:
1 class Solution(): 2 def reverse_Num(self, num:int) -> int: 3 4 rev = 0 5 while(num): 6 pop = num%10 7 rev = rev*10 + pop 8 num = num//10; 9 10 if rev>pow(2,31)-1 or rev<(-1)*pow(2,31): 11 print('reverse Value over flow') 12 rev = 0 13 break 14 return rev
经验小贴士:
1. 学习到一种表示方式 def fun(x: int) --> int; 表示该函数得形参指定为int型数据,同时返回值也为int型数据
2. 和同事探讨,Python面向对象得思想比较弱,甚至可以把它得类看成一种函数,不需要该类定义一个函数实体,即可使用类中得方法
三. 总结
坚持就是胜利