洛谷P1307
题目描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入格式
一个整数 NN
输出格式
一个整数,表示反转后的新数。
输入输出样例
输入 #1复制
123
输出 #1复制
321
输入 #2复制
-380
输出 #2复制
-83
说明/提示
数据范围
-1,000,000,000≤N≤1,000,000,000−1,000,000,000≤N≤1,000,000,000。
noip2011普及组第一题
个人的题解
因为是倒序输出,所以想到了栈,并且数据比较大,所以用字符串来存
时间复杂度O(1)
空间复杂度O(1)
因此此解方法已经很优化了
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main(){
string num;
cin>>num;
int len=num.length();
stack<char>st;
if(num[0]=='-')
{
cout<<"-";
for(int i=1;i<len;i++)
st.push(num[i]);
}
else{
for(int i=0;i<len;i++)
st.push(num[i]);
}
while(st.top()=='0'){
st.pop();
}
while(!st.empty())
{
cout<<st.top();
st.pop();
}
return 0;
}