【洛谷 P1307】[NOIP2011 普及组] 数字反转 题解(字符串)

[NOIP2011 普及组] 数字反转

题目描述

给定一个整数 N N N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。

输入格式

一个整数 N N N

输出格式

一个整数,表示反转后的新数。

样例 #1

样例输入 #1

123

样例输出 #1

321

样例 #2

样例输入 #2

-380

样例输出 #2

-83

提示

【数据范围】

$-1,000,000,000\leq N\leq 1,000,000,000 $。

noip2011 普及组第一题

思路

如果输入0直接输出,否则输出符号,去除多余的0,倒序输出。

AC代码

#include 
#include 
#include 
#include 
#define AUTHOR "HEX9CF"
using namespace std;

int main()
{
    string str;
    char ch;
    vector<int> v;
    getline(cin, str);
    if(str == "0"){
        cout << str << endl;
        return 0;
    }
    stringstream ss;
    ss << str;
    while (ss >> ch)
    {
        if ('-' == ch)
        {
        putchar('-');
        }
        else
        {
            v.push_back(ch - '0');
        }
    }
    vector<int>::reverse_iterator rit = v.rbegin();
    for(;rit != v.rend(); rit++){
        if(0 != *rit){
            break;
        }
    }
    for(;rit != v.rend(); rit++){
        cout << *rit;
    }
    return 0;
}

你可能感兴趣的:(数据结构与算法,c++,算法,数据结构)