4

将字符串拆分为其后缀数组的最有效方法是什么?

假设您有字符串“天气很好”,我想生成一个后缀数组,如下所示:

[0] = "nice"

[1] = "is nice"

[2] = "weather is nice"

[3] = "the weather is nice"

我可以从头到尾访问其标记(单词)的迭代器形式的字符串。

4

3 回答 3

7

使用 将数组拆分为空格split,然后从后到前遍历生成的标记,取前一个后缀,并将当前标记放在其前面。如果没有前置后缀,请使用空字符串:

String str = "quick brown fox jumps over the lazy dog";
List<String> res = new ArrayList<String>();
String last = null;
String[] tok = str.split(" ");
for (int i = tok.length-1 ; i >= 0 ; i--) {
    if (last == null) {
        last = tok[i];
    } else {
        last = tok[i] + " " + last;
    }
    res.add(last);
}
for (String s : res) {
    System.out.println(s);
}

这打印

dog
lazy dog
the lazy dog
over the lazy dog
jumps over the lazy dog
fox jumps over the lazy dog
brown fox jumps over the lazy dog
quick brown fox jumps over the lazy dog

链接到 ideone 上的演示。

于 2013-02-26T15:16:39.593 回答
0

显而易见的解决方案是在空格上标记字符串并ListArray<String>以相反的顺序存储结果。然后从中建立你的答案ListArray,一点递归对灵魂有好处..

于 2013-02-26T15:19:46.283 回答
0

调用 .split(" "); 将返回字符串中的单词数组。

文档

于 2013-02-26T15:20:05.257 回答