题目:
给出由小写字母组成的字符串 S
,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
案例:
大佬做法:
只使用一个字符数组
public String removeDuplicates(String s) {
char[] ch = s.toCharArray(); //把字符串转化成字符数组
int left = -1; //定义数组的下标,left指向新数据的最后一个
for(int i = 0; i < ch.length; i++){ //遍历数组
if(left == -1 || ch[i] != ch[left]){ //若下标为空或两个数据不相等
ch[++left] = ch[i]; //直接把字符数组的数据写入该数组的前面
} else {
left--; //若相邻字符是相同的,则下标左移一位,除去字符中的最后的数据
}
}
return new String(ch, 0, left + 1); //截取已经运算好的数据
}