leetcode 2710 题解

其实这题是比较简单的,但是太久没写代码了,居然写了几分钟

题目

给你一个用字符串表示的正整数 num ,请你以字符串形式返回不含尾随零的整数 num 。

示例 1:
输入:num = “51230100”
输出:”512301”
解释:整数 “51230100” 有 2 个尾随零,移除并返回整数 “512301” 。

示例 2:
输入:num = “123”
输出:”123”
解释:整数 “123” 不含尾随零,返回整数 “123” 。

提示:
1 <= num.length <= 1000
num 仅由数字 0 到 9 组成
num 不含前导零

思路

从最后一位往前读入字符串,然后判断是不是0,到不是0的那一位就开始记录。

注意

  1. 主要是从后往前读入字符串的时候,起始位置(num.length())要注意减1,循环时,标识符要到0。
  2. 用于截断string类型的substr函数。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
string removeTrailingZeros(string num) {
int shuzu[1001], t=0;
bool check = false;
for (int i = num.length() - 1; i >= 0; i--) {
int temp = num[i] - '0';
if (check == false && temp != 0)
check = true;
if (check) {
shuzu[t]=temp;
t++;
}
}
string new_String = "";
for (int i = t-1; i >= 0 ; i--) {
char temp = shuzu[i] + '0';
string tempstr = "";
new_String += temp;
}
return new_String;
}
};
1
2
3
4
5
6
7
8
9
class Solution {
public:
string removeTrailingZeros(string num) {
int pos = num.length( );
pos-- ;
while( pos >= 0 && num[pos] == '0' ) pos--;
return num.substr( 0 , pos + 1 );
}
};