当前位置:   article > 正文

刷题leetcode2——7整数反转_string(s.rbegin(),s.rend())

string(s.rbegin(),s.rend())

备注,自己学到了int到string的函数to_string(),string到int的函数atoi(string.c_str),string中反向构造器逆序

  1. int a = -123;
  2. string s = to_string(a);//int->string
  3. string ans(s.rbegin(), s.rend()-1);//反向构造器逆序
  4. //ans.erase(ans.begin());
  5. ans.insert(ans.begin(), '-');
  6. cout << ans << endl;
  7. int num = 987;
  8. string x = "234";
  9. num = atoi(x.c_str());//string->int

1题目

7. 整数反转

难度简单1725收藏分享切换为英文关注反馈

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321

 示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

2 自己解

做的比较笨

  1. class Solution {
  2. public:
  3. int reverse(int x) {
  4. if(x>INT_MAX||x<INT_MIN)
  5. return 0;
  6. string s=to_string(abs(x));
  7. string ans(s.rbegin(),s.rend());
  8. while(ans[0]=='0')
  9. ans.erase(ans.begin());
  10. if(x<0)
  11. {
  12. ans.insert(ans.begin(),'-');
  13. }
  14. long long n=atoi(ans.c_str());
  15. if(n>INT_MAX||n<INT_MIN)
  16. return 0;
  17. return (int)n;
  18. }
  19. };

3 官方解

  1. class Solution {
  2. public:
  3. int reverse(int x) {
  4. int rev = 0;
  5. while (x != 0) {
  6. int pop = x % 10;
  7. x /= 10;
  8. if (rev > INT_MAX/10 || (rev == INT_MAX / 10 && pop > 7)) return 0;
  9. if (rev < INT_MIN/10 || (rev == INT_MIN / 10 && pop < -8)) return 0;
  10. rev = rev * 10 + pop;
  11. }
  12. return rev;
  13. }
  14. };

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/490473
推荐阅读
相关标签
  

闽ICP备14008679号