对于给定的整数N,输出其逆序数。
输入格式:
输入在一行中给出一个绝对值不超过109的整数N。
输出格式:
在一行中输出N的逆序数。
输入样例:
-12340
输出样例:
-4321
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<bits/stdc++.h>
using namespace std;
string qian(string s, int f) { //去掉前导0,并且把负号去掉(如果有负号)
string x;
int cnt = 0;
if(f == 0) {
for(int i = 0; i < s.size(); i++) {
if(s[i] != '0') {
x += s[i];
cnt = 1;
}
else {
if(cnt == 1)
x += s[i];
}
}
}
else {
for(int i = 1; i < s.size(); i++) {
if(s[i] != '0') {
x += s[i];
cnt = 1;
}
else {
if(cnt == 1)
x += s[i];
}
}
}
return x;
}
string hou(string s) { //去掉后导0,并且把字符逆向存储
string x;
int cnt = 0;
for(int i = s.size() - 1; i >= 0; i--) {
if(s[i] != '0') {
cnt = 1;
x += s[i];
}
else {
if(cnt == 1)
x += s[i];
}
}
return x;
}
int main() {
string s;
cin >> s;
int f = 0;
if(s[0] == '-') //用f来标记该数是整数还是负数
f = 1;
s = qian(s, f);
s = hou(s);
if(s.size() == 0) { // 判断该字符串是否为空,是输出0,结束程序
cout << 0 << endl;
return 0;
}
if(f == 1) { //判断该数字是否为负数
cout << "-" << s << endl;
}
else { //判断该字符是否为整数
cout << s << endl;
}
return 0;
}