方法一:空间换时间
由于常见的字符个数最多为256个,可以申请一个大小为8的int类型(每个int类型占32bit)的数组记录每个字符出现的次数,都初始化为0,把字符的编码作为数组的下标,在遍历字符数组时,如果字符出现的次数为0,把它置为1;如果出现的次数为1,把这个字符置为'\0',最后去掉所有'\0',时间复杂度为O(n)
方法二:哈希表
import java.util.Hashtable;
import java.util.Iterator;
public class delDup {
public static void main(String[] args){
String s="abbcddefeghuja";
System.out.println(delDup(s));
}
public static String delDup(String s){
char[] chs=s.toCharArray();
String res="";
Hashtable<Character, Integer> table=new Hashtable<>();
for(int i = 0; i<chs.length; i++){
if (table.containsKey(chs[i])) {
continue;
}else {
table.put(chs[i], 1);
continue;
}
}
for(Iterator<Character> it = table.keySet().iterator(); it.hasNext();){
Character key=it.next();
res+=key;
}
return res;
}
}