根据geekforgeeks http://www.geeksforgeeks.org/given-a-string-find-its-first-non-repeating-character/ 1解决方案将是:
"通过不仅存储计数而且还存储第一次遇到该字符时的索引来使用计数数组,例如(3,26)对于'a'意味着'a'被计数3次并且第一次看到它是在位置26.所以当找到第一个非转发器时,我们只需要扫描计数数组而不是字符串"
没关系,但有人建议这个 - > "而不是从左到右遍历,从右到左遍历并维护计数数组并保留仅出现一次的字符记录。 这将节省存储索引的空间,只需要一次传递。"
这就是我感到困惑的地方,我的意思是从右到左并节省时间会带来什么好处?
答案 0 :(得分:2)
改变方向没有任何好处。
在第一阶段,您需要遍历字符串和计数字符。任何一个方向都可以。
在第二阶段,您会在列表中找到第一项计数为1的项目。
没有必要尝试跟踪最后一个字符,因为后来的字符可以使它无效。考虑"bba"
:从右到左阅读时,最后一个字符是a
,然后是b
,然后由第二个b
无效。