<OJ_Sicily>数字反转

来源:互联网 发布:中国民生网络电视台 编辑:程序博客网 时间:2024/05/16 00:25

Description

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

Input

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

-1,000,000,000 ≤ N≤ 1,000,000,000。

Output

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


解题思路:对于数字输入,采用字符数组输入的方式进行输入,将输入存入到一个字符数组里面,当第一个字符为“-”说明这是一个负数,否则为整数。先对字符数组进行遍历到数字的个位,然后从后往前寻找第一个不为0 的数(也就是排除开头为0的情况),然后从该数开始逐个输出,最后判断第一位是否为符号位,如果是符号位则不需要输出(因为符号位是第一个输出的),如果是数字则直接输出。

#include <iostream>#include <stack>using namespace std;int main(int argc, const char * argv[]) {    // insert code here...    char inStr[12];    int i = 0;    bool isNegative = false;   // 标识是否为负数    cin >> inStr;    if (inStr[0] == '-') {     // 若为负数,isNegative = true;        isNegative = true;    }    while (inStr[i] != '\0') {  // 先遍历到数字结尾        i++;    }        while (inStr[i-1] == '0') {  // 从结尾开始返回到第一个不为0的数        i--;    }    if (isNegative) {           // 若为负数,先输出负号        cout << "-" ;    }    for (int j = i-1; j > 0; j--) {  // 逐个输出数字        cout << inStr[j];    }    if (!isNegative) {          // 若为负数说明第一个为符号位,不用输出        cout << inStr[0] << endl;    }    else cout << endl;          // 若不为负数,说明第一个为数字位,需要输出    return 0;}


0 0