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 求解删除字符串中的所有相邻重复项