前言:
此刻你们对“去除重复java”大约比较讲究,咱们都需要学习一些“去除重复java”的相关内容。那么小编也在网摘上网罗了一些对于“去除重复java””的相关知识,希望兄弟们能喜欢,我们快快来了解一下吧!题目
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
来源:力扣(LeetCode)
链接:
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码
public class DayCode { public static void main(String[] args) { String s = "abbaca"; String ans = new DayCode().removeDuplicates(s); System.out.println("ans is " + ans); } /** * 时间复杂度O(n) * 空间复杂度O(n) * * @param S * @return */ public String removeDuplicates(String S) { StringBuilder stringBuilder = new StringBuilder(); int n = S.length(); Deque<Character> deque = new ArrayDeque<>(n); for (int i = 0; i < n; i++) { if (deque.isEmpty() || (!deque.isEmpty() && S.charAt(i) != deque.peek())) { deque.push(S.charAt(i)); } else { while (!deque.isEmpty() && S.charAt(i) == deque.peek()) { deque.pop(); } } } while (!deque.isEmpty()) { stringBuilder.append(deque.pop()); } return stringBuilder.reverse().toString(); }}
总结
* 这是一道简单题,重拳出击!题目含义容易理解。采用栈的数据结构,可以帮助简化问题,对栈进行添加,移除操作,最后返回字符串即可。
* 坚持每日一题,加油!
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #去除重复java