string - 确定字符串是否包含字符的最快方法

标签 string algorithm search unicode

我有一个由 unicode 字符组成的字符串。同一个字符只能出现一次。 字符串的长度在 1 到 ~50 之间。

检查特定字符是否在字符串中的最快方法是什么?

迭代字符串不是一个好的选择,不是吗?是否有任何有效的算法可用于此目的?

我的第一个想法是让字符串中的字符按字母顺序排序。它可以被快速搜索,但是 unicode 字符的排序和比较并不是那么简单(使用正确的排序规则)并且它有很大的成本,可能比迭代整个字符串更大。

也许一些散列?也许迭代是最快的方法?

有什么想法吗?

最佳答案

如果没有预处理,最简单和最快的方法是遍历字符。

如果有预处理,以前的方法可能仍然是最好的,或者你可以尝试一个小的哈希表来存储一个字符串是否包含该字符。存储散列将占用额外的空间,但对于内存缓存可能更好(散列冲突低并且假设您不必访问实际的字符串)。确保衡量性能。

我有一种感觉,您正试图过度设计一项非常简单的任务。您是否已确认这是您应用程序中的瓶颈?

关于string - 确定字符串是否包含字符的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18835536/

相关文章:

php - 在 PHP 中搜索多维数组

C 在字符串中搜索单词

ios - 不区分大小写的字符串搜索 - iphone

php - 如何找到数组中的最大和最小日期?

algorithm - 将 Zigzag 顺序的二叉树转换为双向链表

algorithm - 寻找两个任意顶点之间所有连接的图算法

ruby - 如何将数组中的字符串一分为二?

javascript - 使用 vue.js 将价格格式更改为卢比

C 更改传递给函数的字符串不起作用

java - 2个字符串的java中.equals的时间复杂度是多少?