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

题目链接:

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)比较自己想的和参考答案的区别:

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

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

时间: 2024-11-04 12:27:16

1047. Remove All Adjacent Duplicates In String做题报告的相关文章

【leetcode】1209. Remove All Adjacent Duplicates in String II

题目如下: Given a string s, a k duplicate removal consists of choosing k adjacent and equal letters from s and removing them causing the left and the right side of the deleted substring to concatenate together. We repeatedly make k duplicate removals on 

LeetCode 1209. Remove All Adjacent Duplicates in String II

原题链接在这里:https://leetcode.com/problems/remove-all-adjacent-duplicates-in-string-ii/ 题目: Given a string s, a k duplicate removal consists of choosing k adjacent and equal letters from s and removing them causing the left and the right side of the delet

做题报告模板

题目链接: Remove All Adjacent Duplicates In String 题目大意: .... 做题报告: (1)该题涉及的算法与数据结构 ... (2)自己的解答思路+代码+分析时间和空间复杂度 (3)大神们的解答思路+代码+分析时间和空间复杂度 时间和空间复杂度: 时间复杂度:O( ) 空间复杂度:O( ) (4)比较自己想的和参考答案的区别 原文地址:https://www.cnblogs.com/Aiahtwo/p/12228711.html

71. Simplify Path做题报告

题目链接: 71. Simplify Path 题目大意: 简化路径,如果对于‘.'字符,表明为此目录,对于‘..'字符,表明为回到此目录上一节点(即:删除上一节点),我们现在需要删除多余的'/'字符和'.'字符 做题报告: (1)该题涉及的算法与数据结构与知识点 Java NIO中的Files类,正则表达式,栈 (2)自己的解答思路+代码+分析时间和空间复杂度 栈 class Solution { public String simplifyPath(String path) { String

20. Valid Parentheses做题报告

题目链接: Valid Parentheses 题目大意: 判断字符串s的字符是否满足符号匹配 做题报告: (1)该题涉及的算法与数据结构 栈,哈希表 (2)自己的解答思路+代码+分析时间和空间复杂度 思路: 栈先入后出特点,若遇到左括号入栈,遇到右括号时将对应栈顶左括号出栈,则遍历完所有括号后 stack 仍然为空则表示满足符号匹配,输出true,否则输出false 代码: import java.util.Stack; class Solution { public boolean isVa

94. Binary Tree Inorder Traversal 做题报告

题目链接: 94. Binary Tree Inorder Traversal 题目大意: 二叉树的中序遍历 做题报告: (1)该题涉及的算法,数据结构以及相关知识点 递归 (2)自己的解答思路+代码+分析时间和空间复杂度 递归思路 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) {

1047--Remove All Adjacent Duplicates In String

public class RemoveAllAdjacentDuplicatesInString { /* 解法一:栈 */ public String removeDuplicates(String S) { Stack<Character> stack=new Stack<>(); for (char c:S.toCharArray()){ if (stack.isEmpty()||c!=stack.peek()) stack.push(c); else stack.pop()

POJ2155/LNSYOJ113 Matrix【二维树状数组+差分】【做题报告】

这道题是一个二维树状数组,思路十分神奇,其实还是挺水的 题目描述 给定一个N∗NN∗N的矩阵AA,其中矩阵中的元素只有0或者1,其中A[i,j]A[i,j]表示矩阵的第i行和第j列(1≤i,j≤N)(1≤i,j≤N),初始矩阵元素都是0.在矩阵上进行TT次操作,操作有以下两种: (1)格式为C x1 y1 x2 y2(1≤x1≤x2≤n,1≤y1≤y2≤n)C x1 y1 x2 y2(1≤x1≤x2≤n,1≤y1≤y2≤n) ,其中CC为字符“C”,表示把以(x1,y1)(x1,y1)为左上角,

136. Single Number leetcode做题报告

Given an array of integers, every element appears twice except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory? class Solution { public: int singleNumber(vec