1047. 删除字符串中的所有相邻重复项|刷题打卡

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

一、题目描述:



给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。


示例 :

输入:"abbaca"

输出:"ca"

解释:

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


提示:

  • 1 <= S.length <= 20000
  • S 仅由小写英文字母组成。


二、思路分析:


思路一:

利用数组arr存放最后所需的结果,然后转字符串。

循环字符串S,判断arr最后一位是否等于当前循环的字符串,不等就将当前值添加到arr中,否则就删除arr中最后一位。


三、AC 代码:


方法一:

function removeDuplicates(S: string): string {
  let arr = [];
  for (let i = 0; i < S.length; i++) {
    if (arr[arr.length - 1] !== S[i]) {
      arr.push(S[i]);
    } else {
      arr.pop();
    }
  }
  return arr.join("");
}


四、总结:


使用变量存储中间值。


题目来源:leetcode。


作者:ClyingDeng

链接:https://juejin.cn/post/6937483132245377061

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录
相关文章
|
6月前
|
Java C++ Python
leetcode-1047:删除字符串中的所有相邻重复项
leetcode-1047:删除字符串中的所有相邻重复项
45 0
|
存储 算法 前端开发
前端算法-删除字符串中的所有相邻重复项
前端算法-删除字符串中的所有相邻重复项
|
1月前
【LeetCode-每日一题】 删除排序数组中的重复项
【LeetCode-每日一题】 删除排序数组中的重复项
21 4
09_删除字符串中的所有相邻重复项
09_删除字符串中的所有相邻重复项
|
5月前
|
索引
leetcode题解:26.删除有序数组重复项
leetcode题解:26.删除有序数组重复项
20 0
|
6月前
|
存储 Java 索引
删除字符串中的所有相邻重复项
删除字符串中的所有相邻重复项
|
6月前
leetcode代码记录(删除字符串中的所有相邻重复项
leetcode代码记录(删除字符串中的所有相邻重复项
37 0
⌈力扣⌋删除字符串中的所有相邻重复项
⌈力扣⌋删除字符串中的所有相邻重复项
51 0
每日一题——删除字符串中的所有相邻重复项
每日一题——删除字符串中的所有相邻重复项
|
算法
LeetCode每日1题--删除字符串中的所有相邻重复项
LeetCode每日1题--删除字符串中的所有相邻重复项
72 0