【问题标题】:First non-repeating character of a string [duplicate]字符串的第一个非重复字符[重复]
【发布时间】:2014-09-18 12:11:25
【问题描述】:

根据 geekforgeeks http://www.geeksforgeeks.org/given-a-string-find-its-first-non-repeating-character/ 1 解决方案是:

" 使用计数数组,不仅存储计数,还存储您第一次遇到字符的索引,例如 (3, 26) 表示 'a' 意味着 'a' 被计数了 3 次,第一次是seen 位于第 26 位。因此,在查找第一个非重复节点时,我们只需要扫描计数数组,而不是字符串”

那很好,但是有人建议这样做->“而不是从左到右遍历,而是从右到左遍历并维护计数数组并保留仅出现一次的字符记录。 这将节省存储索引的空间,并且只需要一次。”

这就是我感到困惑的地方,我的意思是从右到左并节省时间有什么好处?

【问题讨论】:

    标签: c arrays string algorithm character


    【解决方案1】:

    改变方向没有任何好处。

    在第一阶段,您需要遍历字符串并计算字符数。任何一个方向都可以。

    在第二阶段,您会在列表中找到计数为 1 的第一项。

    尝试跟踪最后一个字符是没有意义的,因为它可能会被后面的字符无效。考虑"bba":当从右向左阅读时,最后一个字符是第一个a,然后是b,然后被第二个b失效。

    【讨论】:

    • 是的。倒退的唯一(微小)好处是您可以无条件地覆盖位置数组。
    猜你喜欢
    • 2013-09-25
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    相关资源
    最近更新 更多