Arrays 查找字符串中的重复字符(解决方案必须小于O(n^2)

Arrays 查找字符串中的重复字符(解决方案必须小于O(n^2),arrays,string,Arrays,String,如果我们遍历每个字符的字符串数组并与所有其他字符进行比较,我们会找到重复的字符,但这是O(n^2) 我需要一些想法在不到O(n^2)的时间内完成它 假设输入字符串是:那么好书 输出将是:o迭代所有字符,并将它们存储到哈希映射中,其中键是字符本身,值是任何东西(字符、true、整数等)。在将字符添加到哈希映射之前,请检查该字符是否已存在,如果存在,如果不插入,则该字符是重复的 这是一个pesudo代码 for character char in String if charactersMa

如果我们遍历每个字符的字符串数组并与所有其他字符进行比较,我们会找到重复的字符,但这是O(n^2)

我需要一些想法在不到O(n^2)的时间内完成它

假设输入字符串是:那么好书
输出将是:o

迭代所有字符,并将它们存储到
哈希映射中,其中键是字符本身,值是任何东西(字符、true、整数等)。在将字符添加到哈希映射之前,请检查该字符是否已存在,如果存在,如果不插入,则该字符是重复的

这是一个pesudo代码

for character char in String
    if charactersMap.get(char) == null
        charactersMap.put(char, char)
    else
        print C

这个解决方案是
O(n)
,因为它在字符上迭代一次,在映射中查找一个键需要固定的时间。

迭代所有字符并将它们存储到
HashMap
中,键是字符本身,值是否定的(字符、true、整数……)。在将字符添加到哈希映射之前,请检查该字符是否已存在,如果已存在,则该字符是重复的(如果未插入)

这是一个pesudo代码

for character char in String
    if charactersMap.get(char) == null
        charactersMap.put(char, char)
    else
        print C

此解决方案是
O(n)
当它在字符上迭代一次并在地图中查找一个键时需要固定的时间。

要求有点不清楚。你能提供一些示例输入和你试图得到的结果吗?要求有点不清楚。你能提供一些示例输入和你试图得到的结果吗?