Leetcode刷题(第1047题)——删除字符串中的所有相邻重复项

x33g5p2x  于2022-03-22 转载在 其他  
字(0.5k)|赞(0)|评价(0)|浏览(396)

一、题目

  1. 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
  2. S 上反复执行重复项删除操作,直到无法继续删除。
  3. 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

二、示例

  1. 输入:"abbaca"
  2. 输出:"ca"
  3. 解释:
  4. 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯
  5. 一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa"
  6. 以执行重复项删除操作,所以最后的字符串为 "ca"

三、思路
这题采用栈来解决。
四、代码

  1. /**
  2. * @param {string} s
  3. * @return {string}
  4. */
  5. var removeDuplicates = function(s) {
  6. let stack = [s[0]]
  7. let length = s.length
  8. for(let i = 1; i < length; i++) {
  9. if(stack[stack.length - 1] === s[i]) {
  10. stack.pop()
  11. }else {
  12. stack.push(s[i])
  13. }
  14. }
  15. return stack.join('')
  16. };

五、总结

相关文章