Reverse digits of an integer.
Example1: x = 123, return 321Example2: x = -123, return -321
Note:The input is assumed to be a 32-bit signed integer. Your function shouldreturn 0 when the reversed integer overflows.
Solution:
class Solution {public: int reverse(int x) {
//将int转为string int n = x; char c[256]; string s; sPRintf(c, "%d", n); s = c;
//以string的形式设定int的边界 string a = "2147483647"; char ach[256]; strcpy(ach, a.c_str()); string b = "-2147483648"; char bch[256]; strcpy(bch, b.c_str());
//判定是否越界 if (s[0] != '-' && strcmp(c, ach) > 0 && s.size() >= a.size()) return 0; if (s[0] == '-' && strcmp(c, bch) > 0 && s.size() >= b.size()) return 0;
//倒置string string k = s; if (s[0] == '-') for (int i = 1; i < s.size(); i++) s[i] = k[s.size() - i]; else for (int i = 0; i < s.size(); i++) s[i] = k[s.size() - 1 - i]; strcpy(c, s.c_str());
//判定是否越界 if (s[0] != '-' && strcmp(c, ach) > 0 && s.size() >= a.size()) return 0; if (s[0] == '-' && strcmp(c, bch) > 0 && s.size() >= b.size()) return 0;
//将string转为int并返回值 n = atoi(c); return n; }};
新闻热点
疑难解答