Skip to content

Latest commit

 

History

History
143 lines (105 loc) · 2.89 KB

File metadata and controls

143 lines (105 loc) · 2.89 KB
comments difficulty edit_url rating source tags
true
简单
1164
第 347 场周赛 Q1
字符串

English Version

题目描述

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

 

示例 1:

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

示例 2:

输入:num = "123"
输出:"123"
解释:整数 "123" 不含尾随零,返回整数 "123" 。

 

提示:

  • 1 <= num.length <= 1000
  • num 仅由数字 09 组成
  • num 不含前导零

解法

方法一:遍历

我们可以从后往前遍历字符串,遇到第一个不是 0 的字符时停止遍历,然后返回从头开始到这个字符的子串。

时间复杂度 $O(n)$,其中 $n$ 是字符串的长度。忽略答案字符串的空间消耗,空间复杂度 $O(1)$

Python3

class Solution:
    def removeTrailingZeros(self, num: str) -> str:
        return num.rstrip("0")

Java

class Solution {
    public String removeTrailingZeros(String num) {
        int i = num.length() - 1;
        while (num.charAt(i) == '0') {
            --i;
        }
        return num.substring(0, i + 1);
    }
}

C++

class Solution {
public:
    string removeTrailingZeros(string num) {
        while (num.back() == '0') {
            num.pop_back();
        }
        return num;
    }
};

Go

func removeTrailingZeros(num string) string {
	i := len(num) - 1
	for num[i] == '0' {
		i--
	}
	return num[:i+1]
}

TypeScript

function removeTrailingZeros(num: string): string {
    let i = num.length - 1;
    while (num[i] === '0') {
        --i;
    }
    return num.substring(0, i + 1);
}

Rust

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()
    }
}