zoukankan      html  css  js  c++  java
  • 316. Remove Duplicate Letters

         /*
          * 316. Remove Duplicate Letters
          * 2016-7-5 by Mingyang
          * 这个题目有一定的难度,所以需要自己再研究一下
          * 这里用到了stack,首先没到一个数的时候,计数器减一,然后跟stack里面的比较
          * 如果比stack peek的还小,这个就是放到stack里面的前面的,否则就是放到后面了
          * 不过注意!!!stack在弹出的时候必须确保有备胎,也就是弹出以后必须有后补才弹
          * 不然不要弹!
          * 每次弹出来以后需要把visited设为false,每次进去以后呢也需要把visited设为true!!
          */
         public String removeDuplicateLetters(String s) {
                Stack<Character> stack = new Stack<Character>();
                // appearance count
                int[] count = new int[26];
                // used or not;
                boolean[] added = new boolean[26];
                // count appearances
                for (char ch : s.toCharArray())
                    count[ch - 'a']++;
                // go through each char
                for (char ch : s.toCharArray()) {
                    count[ch - 'a']--;
                    if (added[ch - 'a'])
                        continue;
                    // poping out the char which is bigger and still has some left in behind
                    while (!stack.isEmpty() && stack.peek() > ch
                            && count[stack.peek() - 'a'] > 0)
                        added[stack.pop() - 'a'] = false;
                   // add current one
                    stack.push(ch);
                    added[ch - 'a'] = true;
                }
                   // move from stack to string
                StringBuilder sb = new StringBuilder();
                while (!stack.isEmpty()) {
                    sb.append(stack.pop());
                }
                return sb.reverse().toString();
            }
  • 相关阅读:
    简易聊天客户端程序
    java 多线程使用方法及Socket的使用
    跟着音乐节奏随机的产生不同颜色形状的图形
    移动小圆圈
    在一个frame设置四个组件
    触发按钮改变panel面板上的小圆圈颜色
    借助bootstrap框架模仿airbnb写的网页
    攻击DotCom小游戏
    mit java open course assignment #4
    FPS 游戏实现GDI透视
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5646183.html
Copyright © 2011-2022 走看看