码迷,mamicode.com
首页 > 其他好文 > 详细

1047. Remove All Adjacent Duplicates In String做题报告

时间:2020-01-22 16:15:20      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:删除   pen   char   font   inpu   ons   targe   mono   分析   

题目链接:

       Remove All Adjacent Duplicates In String

题目大意:

        删除字符串中的所有相邻字符

做题报告:

(1)该题涉及的算法与数据结构

         

(2)自己的解答思路+代码+分析时间和空间复杂度

   Input: "abbaca" 
Output: "ca"

         思路:使用栈,对字符串遍历,进行入栈出栈操作。如果栈空或者遍历到的该字符与栈顶元素不同则入栈,否则(即遍历到的该字符与栈顶元素相同)出栈。最后,栈存的字符就是我们所要的答案。

         代码:

class Solution {
    public String removeDuplicates(String S) {
        Stack<Character> stack = new Stack<Character>();
        for(int i = 0;i < S.length();i++){
            if((stack.empty() == true) || (stack.peek()!=S.charAt(i))) stack.push(S.charAt(i));
            else stack.pop();
        }
        StringBuffer str=new StringBuffer();
        for (Character c : stack) {
            str.append(c);
        }
        return str.toString();
    }
}

         时间和空间复杂度:

                时间复杂度:O(N)

                空间复杂度:O(N)

(3)大神们的解答思路+代码+分析时间和空间复杂度

         思路:栈思想

         代码:


class Solution {
    public String removeDuplicates(String S) {
        StringBuilder sb = new StringBuilder();
        int sblen = 0;
        for(char c : S.toCharArray()){
            if(sblen != 0 && c == sb.charAt(sblen - 1)){
                sblen--;
                sb.deleteCharAt(sblen);
            }
            else{
                sb.append(c);
                sblen++;
            }
        }
        return sb.toString();
    }
}

         时间和空间复杂度:

                 时间复杂度:O(N)

                 空间复杂度:O(N)

(4)比较自己想的和参考答案的区别:

         思路差不多,只是实现略微不同,导致代码效率也存在略微区别

1047. Remove All Adjacent Duplicates In String做题报告

标签:删除   pen   char   font   inpu   ons   targe   mono   分析   

原文地址:https://www.cnblogs.com/Aiahtwo/p/12228699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!