【算法Lesson2】---整数反转练习

题目描述:

  给出一个 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面向对象得思想比较弱,甚至可以把它得类看成一种函数,不需要该类定义一个函数实体,即可使用类中得方法

三. 总结

  坚持就是胜利

 




猜你喜欢

转载自www.cnblogs.com/szhb-5251/p/11739383.html
今日推荐