题目:
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零
解法一:
#include<iostream>
using namespace std;
int main()
{
int n, n, sum, temp;
cin >> n;
sum = 0;
n = n;
if (n < 0)
{
n = -n;
}
while (n)
{
temp=n%10;
sum = sum * 10 + temp;
n /=10;
}
if (n < 0)
sum = -sum;
cout << sum;
return 0;
}
解法二:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
string s;
cin >> s;
if (s[0] =='-')//解决符号问题
{
s.erase(0, 1);
cout <<"-";
}
reverse(s.begin(), s.end());//单纯reverse()无法将0进行消除
int idx = 0;
while (s[idx] == '0' && idx<s.size()-1)//解决00000,下标留一位,防止全部为0
{
idx++;
}
for (int i = idx; i < s.size(); i++)
{
cout << s[i];
}
return 0;
}