如何有效地从字符串中删除重复的字符?

Chr*_*ris 4 language-agnostic string algorithm duplicates

是否可以从字符串中删除重复的字符而不保存您在数组中看到的每个字符,并检查新数字是否已存在于该数组中?这看起来非常低效.当然必须有一个更快的方法?

Gre*_*ill 9

您可以使用由字符索引的布尔数组:

bool seen[256];
Run Code Online (Sandbox Code Playgroud)

对于字节大小的类似ASCII的字符,上面的内容是合适的.对于16位Unicode:

bool seen[65536];
Run Code Online (Sandbox Code Playgroud)

等等.然后,对于字符串中的每个字符,它是一个简单的查找,以查看是否已经设置了该布尔值.