美文网首页
[力扣] LeetCode 7.整数反转

[力扣] LeetCode 7.整数反转

作者: Eromanga_Sensei | 来源:发表于2020-03-01 15:47 被阅读0次
    致力于找到最简洁的解题方法
    Eromanga_Sensei——Izumi Sagiri
    • 整体思路是这样的:由于反转后的数可能超过int存储范围,所以先裁掉一位,余下的数字与十分之一的int最大值或最小值比较,再看余下的一位数。
    • 能不用循环就不用循环,能用库函数就用库自带的

    • 讲解所用函数
      string to_string(int n): 将int转换为string类型,返回string
      reverse(begin, end): 将beginend之间所有的元素反转次序,重新安排指针
      string string.substr(int pos, int n):返回从pos开始的n个字符的字串
      int atoi(char *):将规整的char *转换为int类型
      char * string.c_str():将string类型的字符串返回为char *
    • 代码如下
    class Solution {
    public:
        int reverse(int x) {
            if(x == 0) return 0;
            int Min = -2147483648, Max = 2147483647, Ans = 0;
            string s = to_string(x);
            std::reverse(s.begin(), s.end());
            if(x < 0) {
                string p = s.substr(0, s.size() - 2);
                if(-1 * atoi(p.c_str()) < Min / 10 || (atoi(p.c_str()) == Min / 10 && s[1] > '8')) return 0;
            } else {
                string p = s.substr(0, s.size() - 1);
                if(atoi(p.c_str()) > Max / 10 || (atoi(p.c_str()) == Max / 10 && s[0] > '7'))      return 0;
            }
            x < 0 ? Ans = -1 * atoi(s.substr(0, s.size() - 1).c_str()) : Ans = atoi(s.substr(0, s.size()).c_str());
            return Ans;
        }
    };
    

    相关文章

      网友评论

          本文标题:[力扣] LeetCode 7.整数反转

          本文链接:https://www.haomeiwen.com/subject/takckhtx.html