移除字符串中的尾随零

131 阅读2分钟

🎈 算法并不一定都是很难的题目,也有很多只是一些代码技巧,多进行一些算法题目的练习,可以帮助我们开阔解题思路,提升我们的逻辑思维能力,也可以将一些算法思维结合到业务代码的编写思考中。简而言之,平时进行的算法习题练习带给我们的好处一定是不少的,所以让我们一起来养成算法练习的习惯。今天练习的题目是一道比较简单的题目 ->移除字符串中的尾随零

问题描述

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

示例 1:

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

示例 2:

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

提示:

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

思路分析

首先我们应该要先理解一下题目意思,题目会给我们一个字符串num,我们需要将字符串末尾连续的零全部去除,如:100我们应该转换成1。理解了题目意思之后我们会发现这是一道比较简单的题目,我们只需要统计字符串中末尾连续0的个数,将其删除即可。

  • 统计字符串末尾0的个数

从后往前遍历,遇到第一个不为0的字符时跳出循环,即可得到改字符串末尾连续0的个数。

let len = 0;
while(num[num.length - 1 - len] == '0') len++;
  • 截取字符串中不包含连续0的部分

使用字符串的slice方法,我们可以快速截取到我们需要的字符串。

string.slice(start, end)

输入参数

  • start:必需。起始位置,第一个字符是 0。
  • end:可选。结束位置(最多,但不包括),默认为字符串长度。

返回值

  • 字符串被提取的部分。

如:

let text = "Hello world!";
let result = text.slice(0, 5);
//result = 'Hello';

前面我们已经计算出了末尾连续0的个数,现在只需要将末尾连续0的长度去除,及截取0字符串长度减去末尾连续0个数之间的字符串即可:

return num.slice(0,num.length - len);

AC 代码

完整 AC 代码如下:

/**
 * @param {string} num
 * @return {string}
 */
var removeTrailingZeros = function(num) {
    let len = 0;
    while(num[num.length - 1 - len] == '0') len++;
    return num.slice(0,num.length - len);
};

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,在此谢谢大家的支持,我们下文再见 🙌。