【发布时间】:2013-02-17 15:06:17
【问题描述】:
这是一道面试题。找到给定字符串中的第一个字符,它只出现一次(我想解决方案应该是 Java)。
例如:
"babcbcd" -> 'a' // 'a' 和 'd' 都只出现一次,但 'a' 出现在 'd' 之前简单的解决方案是
- 建立一个地图(例如
HashMap):char -> 它在字符串中出现的次数; - 扫描字符串并对照map测试字符串字符,直到字符的value为1。
这有意义吗?最好的 map 实现是什么?有没有更好、更有效的解决方案?
【问题讨论】:
-
“有没有更好、更有效的解决方案?”你怎么看?
-
有没有更好、更有效的解决方案?我不这么认为。
-
你可以保留一个优先队列并弹出顶部并检查它是否为 1。
-
@AramKocharyan 你用什么优先级?它比使用 hashmap 的双迭代更好吗?
-
我认为这通常是您必须首先细化要求的问题。例如:内存或cpu时间更重要。我也认为,这里有点离题(programmers.stackexchange.com?)