🎈 算法并不一定都是很难的题目,也有很多只是一些代码技巧,多进行一些算法题目的练习,可以帮助我们开阔解题思路,提升我们的逻辑思维能力,也可以将一些算法思维结合到业务代码的编写思考中。简而言之,平时进行的算法习题练习带给我们的好处一定是不少的,所以让我们一起来养成算法练习的习惯。今天练习的题目是一道比较简单的题目 ->移除字符串中的尾随零
问题描述
给你一个用字符串表示的正整数 num ,请你以字符串形式返回不含尾随零的整数 **num **。
示例 1:
输入: num = "51230100"
输出: "512301"
解释: 整数 "51230100" 有 2 个尾随零,移除并返回整数 "512301" 。
示例 2:
输入: num = "123"
输出: "123"
解释: 整数 "123" 不含尾随零,返回整数 "123" 。
提示:
1 <= num.length <= 1000num仅由数字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,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,在此谢谢大家的支持,我们下文再见 🙌。