1

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

在不使用任何内置方法(包含、.substring 等)的情况下,最节省时间/空间的方法是什么?

例子:

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

字符串:“cardogfoopoo”`

输出:dog foo foopoo foopo dogf

我的想法:

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

<(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)

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

4

0 回答 0