力扣1209. 删除字符串中的所有相邻重复项 II
给你一个字符串 s,「k 倍重复项删除操作」将会从 s 中选择 k 个相邻且相等的字母,并删除它们,使被删去的字符串的左侧和右侧连在一起。
你需要对 s 重复进行无限次这样的删除操作,直到无法继续为止。
在执行完所有删除操作后,返回最终得到的字符串。
本题答案保证唯一。
class Solution {
public String removeDuplicates(String s, int k) {
int N = s.length();
if(N == 1) return s;
StringBuilder sb = new StringBuilder(s);
int[] count = new int[N];
for(int i = 0 ; i < sb.length(); ++i) {
if(i == 0 || sb.charAt(i) != sb.charAt(i - 1)) {
count[i] = 1;
} else {
count[i] = count[i - 1] + 1 ;
if((count[i] == k)) {
sb.delete(i - k + 1,i + 1);
i = i - k;
}
}
}
return sb.toString();
}
}
力扣1047. 删除字符串中的所有相邻重复项
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
class Solution {
public String removeDuplicates(String s) {
StringBuffer stack = new StringBuffer();
int top = - 1;
for(