【发布时间】:2009-07-07 05:11:30
【问题描述】:
实现一个算法,将两个字符串作为输入,并返回两者的交集,每个字母最多表示一次。
算法:(考虑使用的语言将是 c#)
- 将两个字符串都转换为字符数组
- 取较小的数组并为其生成一个哈希表,键为字符,值为0
- 现在循环遍历另一个数组并增加哈希表中的计数(如果其中存在该字符)。
- 现在取出哈希表中值大于 0 的所有字符。
- 这些是交集值。
这是一个 O(n) 的解决方案,但使用了额外的空间、2 个字符数组和一个哈希表
你们能想出比这更好的解决方案吗?
【问题讨论】:
-
他已经提出了一种算法,并询问是否有人知道如何做得更好。
-
嘿....见我上面的算法,我需要知道我们是否可以在不使用额外空间的情况下在 O(n) 时间内解决这个问题
-
我不会 C#,所以我不知道,但这对于 Set(例如在 Java 或 Python 中找到)来说不是完美的吗?
-
一组也是额外的空间。
-
嘿TomatoSandwich,这只是对社区的贡献,以便其他任何人都可以将其用作他/她准备的参考......帮助他人是我的动机,我也在做每一个尝试提出初步解决方案,我认为提出问题没有任何害处,因为它可以帮助我也可以帮助他人