LeetCode Reverse Integer

来源:互联网 发布:syslog apache 编辑:程序博客网 时间:2024/06/07 17:01

问题网址:https://leetcode.com/problems/longest-palindromic-substring/description/

问题描述:
给定一个32位有符号整数,整数的反转数字。

问题样例:
Example 1:

Input: 123Output:  321

Example 2:

Input: -123Output: -321

Example 3:

Input: 120Output: 21

注意:
假设我们正在处理一个只能保持32位有符号整数范围内的整数的环境。 出于这个问题的目的,假设你的函数在反向整数溢出时返回0。

一个简单想法:

int reverse(int x) {    stringstream ss;    string s;    string retVal;    int val;    ss << x;    ss >> s;    for (int i = s.size() - 1; s[i] == '0' && i >= 1; i--) {        s.pop_back();    }    if (s[0] == '-') {        retVal = '-';        for (int i = s.size() - 1; i > 0; i--) {            retVal += s[i];        }    }    else {        for (int i = s.size() - 1; i >= 0; i--) {            retVal += s[i];        }    }    ss.clear();    ss << retVal;    ss >> val;    if (val >= INT_MAX || val <= INT_MIN)        val = 0;    return val;}

时间复杂度:O(n)

下面给出更快的,也是更简洁的一种处理。

class Solution {public:    int reverse(int x) {        long long res = 0;        while(x) {            res = res*10 + x%10;            x /= 10;        }        return (res<INT_MIN || res>INT_MAX) ? 0 : res;    }};
原创粉丝点击