题目:
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
提示:
1 <= S.length <= 20000
S 仅由小写英文字母组成。
示例:
代码:
- 解法一
class Solution {
public String removeDuplicates(String S) {
int n = S.length();
int i = 0;
char[] c = new char[n]; //创建一个新数组
for (int j = 0; j < n; j++) { //遍历字符串S
if (i > 0 && c[i - 1] == S.charAt(j)) { //标记i>0并且相邻的两个字符相等时
i--; //标记i--
} else {
c[i++] = S.charAt(j); //将当前字符存入数组c中
}
}
return new String(c, 0, i); //以字符串的形式返回数组中从角标0开始的i个元