最有效的方法来检查列表中的每个字符串是否是子字符串

时间:2013-11-04 19:16:48

标签: java string algorithm design-patterns matching

给定子环列表和字符串,如果它是子字符串,则打印出列表中的项目。

在不使用任何内置方法(contains,.substring等)的情况下,最有时间/空间效率的方法是什么?

示例:

输入:list:["cat", "dog", "foo", "foopoo", "foopo", "nope", "dogf"]

string:“cardogfoopoo”`

输出: 狗 FOO foopoo foopo dogf

我的想法:

所以到目前为止我的想法是你会遍历给定的字符串并将每个字符映射到索引的arraylist

<(c,[0]),(a,[1]),(r,[2]),(d,[3]),(o,[4,7,8,10,11 ]),(g,[5]),(f,[6]),(p,[4])>

然后循环遍历子字符串列表。

for (int x = 0; x < list.length; x++) {
    String s = list.get(x);
    if (s.get(s.charAt(0)) != null)
         //loop through, comparing from whether the word is in the string

解释

“c”在索引0的地图中。

循环遍历“cat”的长度并比较它是否与从0到“cat”的长度相同

如果是,请打印。

但是这并没有利用这样一个事实:如果已经发现“foo”是一个子字符串,那么检查“foopoo”是否是一个子字符串应该很容易(没有通过foo循环)

我有点卡在那里因为我确信有更有效的方法来做到这一点。不使用“包含”或诸如此类的东西(这不是更有时间效率)

0 个答案:

没有答案