在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,感觉像一棵二叉树应该适合某种方式)。我已经读了一些关于后缀树的事情,但我不确定这是否是正确的道路。
您能想到的任何有效的解决方案?
这是功课? – Oded 2010-06-09 19:43:14
或者也许是面试问题?事实上,这感觉就像我经常让人们在进入之前回答的问题,因为“你不能使用内置的字符串功能”部分。 – 2010-06-09 19:45:19
@Oded - 第 @Tim C - 是的,它通常用于面试问题。 – 2010-06-09 19:46:01