本文主要是介绍LeetCode第1047题 - 删除字符串中的所有相邻重复项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
解答
class Solution {public String removeDuplicates(String S) {if (S.length() == 1) {return S;}LinkedList<String> list = new LinkedList<>();list.add(String.valueOf(S.charAt(0)));for (int i = 1, length = S.length(); i < length; ++i) {char c = S.charAt(i);String s = String.valueOf(c);if (!list.isEmpty() && list.getFirst().equals(s)) {list.pop();} else {list.addFirst(s);}}StringBuilder sb = new StringBuilder();while (!list.isEmpty()) {sb.insert(0, list.removeFirst());}return sb.toString();}
}
要点
当前的解法,效率上似乎存在问题,后续要考虑更加高效的方案。
这篇关于LeetCode第1047题 - 删除字符串中的所有相邻重复项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!