如何将字符串拆分为后缀数组?

时间:2013-02-26 15:14:41

标签: java arrays search phrase

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

假设你有字符串“天气好”,我想生成一个后缀数组:

[0] = "nice"

[1] = "is nice"

[2] = "weather is nice"

[3] = "the weather is nice"

我可以从开头到结尾以令牌(单词)的形式访问迭代器形式的字符串。

3 个答案:

答案 0 :(得分: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

Link to a demo on ideone.

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

javadoc