java 删除重复字母 - 去重字符 - 难

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 删除重复字母 - 去重字符 - 难相关的知识,希望对你有一定的参考价值。

public String removeDup(String s){
  if(s==null || s.length()==0) return "";
  int[] carry = new int[26];
  for(char c : s) carry[c-'a']++;
  Set<Character> s = new HashSet<>(); //保存unique字符
  Stack<Character> stack = new Stack<>(); //这就是单调栈,但不是严格的单调栈
  for(int i = 0 ; i < s.length(); i++){
    if(!s.contains(s.charAt(i))){
      while(!stack.isEmpty() && stack.peek()>s.charAt(i) && carry[stack.peek()-'a']>0){
        s.remove(stack.peek());
        stack.pop();
      }
      stack.push(s.charAt(i));
      s.add(s.charAt(i));
    }
    carry[s.charAt(i)-'a']--;
  }
  return stack.toString();
}
//牛逼

以上是关于java 删除重复字母 - 去重字符 - 难的主要内容,如果未能解决你的问题,请参考以下文章

去重算法--给出一段英文连续的英文字符窜,找出重复出现次数最多的字母

java编程,文件去重

JS去重-删除连续重复的值

急求!!!!用java 写一个 字符串去重 的程序!

急求!!!!用java 写一个 字符串去重 的程序!

Java 求解删除字符串中的所有相邻重复项