欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【acwing 寒假每日一题(入门组)】day35 数字反转

程序员文章站 2022-07-12 23:50:27
...

题目来源:数字反转

题目描述

给定一个整数,请将该数各个位上数字反转得到一个新数。

新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。

输入格式
输入共1行,1个整数N。

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

数据范围
|N|≤109
输入样例:
123
输出样例:
321
输入样例:
-380
输出样例:
-83

思路

按照题意,直接模拟就好了,一些细节在代码的注释体现

代码

#include<bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    cin>>s;
    reverse(s.begin(),s.end());//先翻转
    if(s.back()=='-') //再判断末尾是不是 -号
    {
        cout<<'-';
        s.pop_back();
    }
    int k=0;
    //找到第一个非0的位置,但是我们没有遍历到最后一位 而是遍历到倒数第二位 因为最后一位无论是不是0 都应该保留
    while(k<s.size()-1 && s[k]=='0') k++; 
    while(k<s.size()) cout<<s[k++]; //从这个位置往后输出
    cout<<endl;
    return 0;
}