代码改变世界

Reverse Integer

2015-03-06 09:46  笨笨的老兔子  阅读(136)  评论(0编辑  收藏  举报

将一个整数颠倒

基本思路:用一个标志位记录整数的符号,如果是负数转换成整数后颠倒,然后再乘以-1。本题主要考虑的是溢出。

注意点:

  • 负数到正数的过程中存在溢出
  • 数字颠倒后存在溢出
  1. class Solution {
  2. public:
  3. int reverse(int x) {
  4. long long res = 0;
  5. long long num = 0;
  6. int flag = 1;
  7. if (x < 0)
  8. {
  9. num = num-x;//此处不能写作0-x或者-x,num-x这个表达式实际上存在一个隐式转换
  10. flag = -1;
  11. }
  12. else
  13. {
  14. num = x;
  15. }
  16. while (num)
  17. {
  18. res = res*10 + num % 10;
  19. num = num / 10;
  20. }
  21. if (res > INT_MAX)
  22. {
  23. return 0;
  24. }
  25. return res*flag;
  26. }
  27. };