问题描述
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
分析
分析之前,leetcode提供了一些注意点,比如反转数字后造成的溢出要处理,关键问题来了,怎么处理溢出?这里用了float.h的类库,里面提供了int型的最值,所以只要将反转为long long类型然后判断是否溢出就可以啦。这里还用到了格式化输出的io函数,很是方便。
代码
class Solution {
public:
int reverse(int x) {
int flag = 0;
if (x < 0) { flag = 1;}// x = -x; }
char arr[33];
char arr1[33];
long long k;
sprintf(arr, "%d", x);//格式化输出到arr数组;
int len = strlen(arr);
int i=0;
if (flag) { arr1[0] = '-'; i = 1; }
if (flag){
for (; i < len; i++)
arr1[i] = arr[len - i];
}
else{
for (; i < len; i++)
arr1[i] = arr[len - i - 1];
}
arr1[len] = '\0';
sscanf(arr1, "%lld", &k);//格式化输入到k中
//cout << k<<endl<<len << endl;
if (k < INT_MIN || k > INT_MAX) k = 0;
return k;
}
};