【每日一题37】AcWing 445. 数字反转

Day37 AcWing 445. 数字反转

思路

  1. 模拟
  2. 判断正负

拓展

  1. 字符串操作str.back()
1
2
3
4
5
6
7
8
9
10
11
12
13
string a="abcd";

1.获取字符串最后一个字符
auto b=a.back(); //结果为 b='d';

2.修改字符串最后一个字符
a.back()='!'; //结果为 a="abc!";

3.获取字符串第一个字符
auto b=a.front(); //结果为 b='a';

4.修改字符串第一个字符
a.front()='!'; //结果为 a="!bcd";

代码

方法一
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
if(n<0){ //判断负数
cout<<'-';
n=-n;
}
int res=0;
for(;n;n/=10) res=res*10+n%10;//数字反转直接忽略前导0,方便
cout<<res;
return 0;
}
方法二 STL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
string str;
cin >> str;

reverse(str.begin(), str.end());
if (str.back() == '-')
{
cout << '-';
str.pop_back();
}
//去掉前导0
int k = 0;
while (k + 1 < str.size() && str[k] == '0') k ++ ;
while (k < str.size()) cout << str[k ++ ];
return 0;
}