LeetCode 2710.移除字符串中的尾随零:模拟

发布于:2024-07-03 ⋅ 阅读:(15) ⋅ 点赞:(0)

【LetMeFly】2710.移除字符串中的尾随零:模拟

力扣题目链接:https://leetcode.cn/problems/remove-trailing-zeros-from-a-string/

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

 

示例 1:

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

示例 2:

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

 

提示:

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

解题方法:字符串处理(模拟)

从最后一个元素开始向前遍历,遍历到第一个非零元素为止(一定包含非零元素)。

这样就找到了答案字符串的串尾位置,就能返回答案字符串了。

  • 时间复杂度 O ( l e n ( n u m ) ) O(len(num)) O(len(num))
  • 空间复杂度 O ( 1 ) O(1) O(1),力扣返回值不计入算法空间复杂度

AC代码

C++
class Solution {
public:
    string removeTrailingZeros(string num) {
        int loc = num.size() - 1;
        while (num[loc] == '0') {
            loc--;
        }
        return num.substr(0, loc + 1);
    }
};
Go
// package main

func removeTrailingZeros(num string) string {
    loc := len(num) - 1
    for num[loc] == '0' {
        loc--
    }
    return num[0 : loc + 1]
}
Java
class Solution {
    public String removeTrailingZeros(String num) {
        int loc = num.length() - 1;
        while (num.charAt(loc) == '0') {
            loc--;
        }
        return num.substring(0, loc + 1);
    }
}
Python
class Solution:
    def removeTrailingZeros(self, num: str) -> str:
        for loc in range(len(num) - 1, -1, -1):
            if num[loc] != '0':
                break
        return num[:loc + 1]

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/140067468