Reverse digits of an integer.
来源:互联网 发布:sql语句高级查询 编辑:程序博客网 时间:2024/06/05 03:10
Example1: x = 123, return 321
Example2: x = -123, return -321
挺简单的一个题目,只需要分情况讨论即可,因为一个int型数据可能是正数可能是负数,也可能为0,当然还有一种很重要的情况就是溢出,当实参大于int的最大值的情况下的处理,直接返回0即可
class Solution {public:int reverse(int x) {if (x == 0){return x;}bool negative = false;if (x < 0){negative = true;x = 0 - x;}//检测该x是否已经溢出,溢出时直接返回0int max = numeric_limits<int>::max();if (x>max)return 0;//到此为止,x已经是非负值了int nBits = 1, nAverage = 10;int tmp = x;while (true){if (nAverage == 1000000000){if ((tmp / nAverage<10)&&(tmp/nAverage!=0)){nBits++;break;}}if (tmp / nAverage){nBits++;nAverage *= 10;}elsebreak;}//到现在为止 nBits是和x位数一致,nAverage和x的位数也是一致的int* nArray = new int[nBits];int nCount = 0;tmp = x;if (nBits != 10){ //如果nBits不为0,也就是肯定没有溢出的情况下,则nAverage的值是多乘了一个10,进行矫正 nAverage /= 10;}while (nCount<nBits){nArray[nCount++] = tmp / nAverage;tmp -= nAverage*nArray[nCount - 1];nAverage /= 10;}//进行新数组的构造,作为返回值应该是防止溢出的,所以定义为unsigned long long,在int型数据下操作是没有问题的,unsigned long long sum = 0;for (int i = 0; i < nBits; i++){unsigned long long mm = 1, m = 0;while (m!=i){mm *= 10;m++;}sum += (unsigned long long)nArray[i] * mm; if (sum>max)return 0;}delete[] nArray;if (negative){sum = 0 - sum;}return sum;}};这道题教会我考虑对于一个问题,我们要考虑各种边界情况,比如为0,比如溢出...
0 0
- Reverse digits of an integer.
- reverse digits of an integer.
- Reverse digits of an integer.
- Reverse digits of an integer.
- Reverse digits of an integer.
- reverse digits of an integer
- Reverse digits of an integer.
- leetcode 75: Reverse digits of an integer.
- 【LeetCode】Reverse digits of an integer
- leetcode:Reverse digits of an integer
- LeetCode Reverse digits of an integer.
- leetcode Reverse digits of an integer
- leetcode 7 Reverse digits of an integer
- Problem 7.Reverse digits of an integer.
- leetcode-T7 Reverse digits of an integer
- Reverse digits of an integer(数字倒换)
- LeetCode 7.Reverse digits of an integer.
- 【C++】Reverse digits of an integer
- iOS多线程编程之GCD
- linearlayout 居中问题
- 基于mongodb, 设计游戏中的个人背包系统
- C++程序常见的性能调优方式
- Android模拟器Genymotion学习笔记
- Reverse digits of an integer.
- 51nod round3# 序列分解(折半枚举+字典树)
- [Phonegap+Sencha Touch] 移动开发53 Cordova/Phonegap 4(或5) 多了什么?
- hdu 1867 A + B for you again
- 计算机网络知识
- _beginthreadx
- Activity Liftcycle
- ios开发系统自带推送(ios自学笔记)
- Leetcode|Median of Two Sorted Arrays