当前位置:   article > 正文

[ZCMU OJ]1749: 数字反转(reverse/erase)_给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形

给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形

Description

给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(如:输入-380,输出-83)。

Input

输入共1行,一个整数N。

Output

输出共1行,一个整数,表示反转后的新数。

Sample Input

123

Sample Output

321

HINT

-1,000,000,000<=N<=1,000,000,000。

NOIP2011 普及组 reverse

Source

NOIP2011

--------------------------------------------------------------------------------------------------------------------------------

小坑:

注意用while(cin>> )读入字符串,否则会PE。

思路:

首先利用reverse将字符串反转;如果原字符串的数字是负数,那么反转后的最后一位就是负号。此时去掉末尾负号并直接输出负号。

(特殊情况:

考虑到“10000”这种反转后字符串存在多个零的情况,要顺次删除;

如果仅仅输入的是0则不能删去。)

ac代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. string x;
  6. while(cin>>x)
  7. {
  8. reverse(x.begin(),x.end());//反转初始字符串
  9. if(x[x.size()-1]=='-')//如果是负数需要将负号删除
  10. {
  11. x.erase(x.size()-1,1);
  12. cout<<"-";
  13. }
  14. int i=0;
  15. int lenx=x.size();
  16. while(x[i]=='0'&&lenx>1)//如果末尾有多个0则依次删除,如果输入为0则不删除
  17. x.erase(0,1);
  18. cout<<x<<endl;
  19. }
  20. }

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

闽ICP备14008679号