从字符串中移除星号
#leetcode
#算法/栈
#done
目录
1. 题目及理解
2. 解题思路
- 我们使用一个
栈
来存储字符。 - 遍历输入字符串
s
中的每个字符:- 如果当前字符
不是星号
,我们就把它推入栈
中。 - 如果当前字符
是星号
,我们就从栈顶弹出一个字符
(如果栈不为空)。
- 如果当前字符
- 最后,栈中剩下的字符就是我们的结果。
- 我们使用
join()
方法将栈中的字符连接成一个字符串
- 我们使用
3. 代码实现
/**
* @param {string} s
* @return {string}
*/
var removeStars = function (s) {
// 使用栈
let stack = [];
for (let i = 0; i < s.length; i++) {
if (s[i] === "*") {
stack.pop();
} else {
stack.push(s[i]);
}
}
return stack.join("");
};
3.1. 复杂度分析
- 时间复杂度是
O(n)
,其中 n 是字符串的长度。 - 空间复杂度也是
O(n)
,因为在最坏的情况下(没有星号)