Skip to content

2710. Remove Trailing Zeros From a String

SourceWeekly Contest 347 Q1DifficultyEasyRating1164

Description

Given a positive integer num represented as a string, return the integer num without trailing zeros as a string.

 

Example 1:

Input: num = "51230100"
Output: "512301"
Explanation: Integer "51230100" has 2 trailing zeros, we remove them and return integer "512301".

Example 2:

Input: num = "123"
Output: "123"
Explanation: Integer "123" has no trailing zeros, we return integer "123".

 

Constraints:

  • 1 <= num.length <= 1000
  • num consists of only digits.
  • num doesn't have any leading zeros.

Solutions

Solution 1: Traversal

Thinking

Only trailing zeros of the decimal representation should be removed; zeros in the middle or at the front stay. A left-to-right scan cannot tell which zeros are trailing until the end is known.

Stripping consecutive zeros from the right is exactly \(rstrip\).

We can traverse the string from the end to the beginning, stopping when we encounter the first character that is not 0. Then, we return the substring from the beginning to this character.

The time complexity is \(O(n)\), where \(n\) is the length of the string. Ignoring the space consumed by the answer string, the space complexity is \(O(1)\).

1
2
3
class Solution:
    def removeTrailingZeros(self, num: str) -> str:
        return num.rstrip("0")
1
2
3
4
5
6
7
8
9
class Solution {
    public String removeTrailingZeros(String num) {
        int i = num.length() - 1;
        while (num.charAt(i) == '0') {
            --i;
        }
        return num.substring(0, i + 1);
    }
}
1
2
3
4
5
6
7
8
9
class Solution {
public:
    string removeTrailingZeros(string num) {
        while (num.back() == '0') {
            num.pop_back();
        }
        return num;
    }
};
1
2
3
4
5
6
7
func removeTrailingZeros(num string) string {
    i := len(num) - 1
    for num[i] == '0' {
        i--
    }
    return num[:i+1]
}
1
2
3
4
5
6
7
function removeTrailingZeros(num: string): string {
    let i = num.length - 1;
    while (num[i] === '0') {
        --i;
    }
    return num.substring(0, i + 1);
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
impl Solution {
    pub fn remove_trailing_zeros(num: String) -> String {
        let mut i = num.len() - 1;

        while num.chars().nth(i) == Some('0') {
            i -= 1;
        }

        num[..i + 1].to_string()
    }
}

Comments