c# - 有效确定数组中的哪些字符串是其他字符串的子字符串?

标签 c# algorithm string

在 C# 中,假设您有一个字符串数组,其中仅包含字符“0”和“1”:

string[] input = { "0101", "101", "11", "010101011" };

并且您想构建一个函数:

public void IdentifySubstrings(string[] input) { ... }

这将产生以下内容:

"0101 is a substring of 010101011"
"101 is a substring of 0101"
"101 is a substring of 010101011"
"11 is a substring of 010101011"

而且您不能使用内置的字符串功能(例如 String.Substring)。

如何有效地解决这个问题?当然,您可以通过暴力破解它,但感觉应该有一种方法可以用树来完成它(因为唯一的值是 0 和 1,所以感觉就像二叉树应该以某种方式适合)。我读过一些关于后缀树之类的东西,但我不确定这是否是正确的路径。

你能想到什么有效的解决方案?

最佳答案

首先,您别无选择,只能在搜索字符串中的每个字节(或位;-)至少一次。可能最好将它们保留为字节。然后执行 Trie (或变体)。将所有子字符串加载到 trie 中。节点对象应包含标识它们属于加载的数组元素的成员。然后用每个子字符串搜索它并进行匹配。

关于c# - 有效确定数组中的哪些字符串是其他字符串的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3009314/

相关文章:

algorithm - 部分回溯搜索的通用算法

java - 查找字符串 S2 所花费的时间

string - Powershell字符串分割差异

c# - 如何使用 PCL 创建目录

c# - 组合框 SelectedItem 无法正常工作

列表中第二大值的算法考试示例

java - 字符串索引越界但不知道在哪里 :(

c# - 如何重复一组字符

c# - Web.MVC 中的简单注入(inject)器,未发生注入(inject)

c# - 如何根据浏览器文化将特定的 CSS 文件链接到母版页?