LeetCode Reverse Integer

来源:互联网 发布:淘宝网图片保护网址 编辑:程序博客网 时间:2024/06/15 20:17

一、题目

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321
Example 2:

Input: -123
Output: -321
Example 3:

Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only hold integers within the 32-bit signed integer range. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

二、代码

采用字符串反转

class Solution {public:    int reverse(int x) {    if(x==0)        return 0;    string tem="";    stringstream ss;    ss << abs(x);    string str = ss.str();    str.erase(0, str.find_first_not_of('0'));    for (string::reverse_iterator it = str.rbegin(); it != str.rend(); it++)    {        tem += *it;    }    long long num;    stringstream temstr(tem);    temstr>>num;    if(num>0x7fffffff)        num = 0;    return x<0?-num:num;    }};

快算法:

static int x = []() {     std::ios::sync_with_stdio(false);  //cin,cout效率低是因为要把输入、输出的东西存入缓冲区,再输入、输出,导致效率降低。该语句可以来取消iostream的输入、输出缓存,使效率与scanf与printf相差无几。C++为了兼容C,保证程序在使用了std::printf和std::cout的时候不发生混乱,将输出流绑到了一起。    cin.tie(NULL);//默认的情况下cin绑定的是cout,每次执行 << 操作符的时候都要调用flush,会增加IO负担。可以通过tie(0)(0表示NULL)来解除cin与cout的绑定,进一步加快执行效率。      return 0; }();class Solution {public:    int reverse(int x) {        long long answer = 0;        while (x) {            answer = answer * 10 + x % 10;            x /= 10;        }        return (answer > INT_MAX || answer < INT_MIN)?0:(int)answer;    }};
原创粉丝点击