zoukankan      html  css  js  c++  java
  • Leecode no.1047 删除字符串中的所有相邻重复项

    package leecode;

    import java.util.Arrays;
    import java.util.Stack;

    /**
    * @Author:Tang
    * @CreateDate 2021/3/9
    *
    * 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
    *
    * 在 S 上反复执行重复项删除操作,直到无法继续删除。
    *
    * 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
    *
    * 1 <= S.length <= 20000
    * S 仅由小写英文字母组成
    */
    public class removeDuplicates {

    /**
    * 方法一
    * 乍看一眼感觉得用递归 (做麻烦了)
    *
    * for循环 找到当前串中的一对重复数据为止
    * 删除这一对 然后向下传递
    * 直到再也没有重复的了
    */
    public String execute(String S){
    if(S == null || S.isEmpty()){
    return "";
    }
    if(S.length() == 1){
    return S;
    }

    int index = 0;

    for (int i = index; i < S.length()-1; i++) {
    if(S.charAt(i) == S.charAt(i+1)){
    StringBuffer stringBuffer = new StringBuffer();
    char[] array = S.toCharArray();
    array[i] = 0;
    array[i+1] = 0;
    for (char c: array) {
    if(c != 0){
    stringBuffer.append(c);
    }
    }
    return execute(stringBuffer.toString());
    }

    }
    return S;

    }

    /**
    * 方法二
    * 两个重复项碰撞然后删除 很容易让人想到用栈
    * @param S
    * @return
    */
    public String removeDuplicates(String S){
    if(S.isEmpty()){
    return S;
    }

    char[] charArr = S.toCharArray();
    Stack<Character> stack = new Stack();

    for (char c: charArr) {
    if(!stack.isEmpty() && stack.peek() == c){
    stack.pop();
    }else {
    stack.push(c);
    }
    }

    StringBuffer stringBuffer = new StringBuffer();
    for(int i = 0; i < stack.size(); i++){
    stringBuffer.append(stack.get(i));
    }
    return stringBuffer.toString();
    }

    public static void main(String[] args) {
    String result = new removeDuplicates().removeDuplicates("cabbc");
    System.out.println(result);
    }

    }
  • 相关阅读:
    IList扩展
    WPF 路由事件
    WPF 属性值绑定、转换
    WPF 生命周期
    App.config 动态编辑
    Oracle Package的全局变量与Session
    AES对数据进行加密与解密
    OracleAES加密
    AES加解密程序的实现
    Oracle的AES加密与解密用法
  • 原文地址:https://www.cnblogs.com/ttaall/p/14507800.html
Copyright © 2011-2022 走看看