![]() |
1
2
如果你考虑到字符实际上不限于256,Unicode中有接近2^32个码位,而如果你在UTF-8字符串上尝试你所计划的,它就会爆炸,这一点就非常糟糕了。在很大程度上。
一个更好的方法是使用像MD5或FNV这样的摘要算法,或者做你正在做的事情,而不是使用
编辑:
|
![]() |
2
2
我认为你的算法不正确。考虑一下字符串:“baaabedacdc”。正确答案仍然是“bedac”,但是您的算法将向前推进开始指针,直到找到“e”(唯一出现次数为1的字符),然后向后移动结束指针,直到找到“e”(唯一出现次数为1的字符),结果为“e”。 不过,我可能误解了算法。 |
|
3
-1
为什么不使用一个更简单的算法来解决这个问题,可能不是最省时的,但它是有效的;): 第一步。(假设我们处理的是26个字母的字符集),创建一个大小为26的布尔数组,扫描字符串并检查与字符对应的布尔值。例如,遇到a时设置elem[0]=true,遇到b时设置elem[1]=true。
第三步。第二次遍历给定的字符串,同时提取长度为5的子字符串,按升序对它们进行排序,并将它们与步骤2中的字符串匹配。 |
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |