JAVA中的序列

时间:2014-12-22 21:39:22

标签: java string sequence

我一直试图生成此输出:

  

aaa aaa aab aOa baa aaa aab c

给出了这个序列:

  aaaab aOa baaab c

我对JAVA很陌生,我不能形成其他序列,只是

  

aaa aaa aab

我已经尝试了一个月,这就是为什么我在这里问,有人能帮帮我吗?

这是我的代码:

public void generateSequence(String text, int n)
{
        text ="aaaab aOa baaab c";
        n=3; //i.e

        String[] words = text.split(" ");
        StringBuilder newGram = new StringBuilder();
        int p1 = 0;
        int p2 = n;
        String seq = "";
        int seqLength = seq.length();

        while (p1 < p2 && p2 <= seqLength) {
            newGram = newGram.append(seq.substring(p1, p2) + " ");
            p1++;
            p2++;

            if (p2 == seqLength) {
                System.out.println("End of 1st element");
                //Skip to the next elements in array and form sequences....
            }
        }
        System.out.println(newGram);
    }

2 个答案:

答案 0 :(得分:0)

好的用户现在放一些文本n是从文本生成的子序列的数量,因为您可能知道文本是单词并且我将它们保存为单词数组。

现在,如果你说n = 3的飞行员

结果阵列将是很多人

表示n = 2

结果数组将是pi il lo ot

等等

例如text = Java Rocks!

对于n = 3

Jav ava Roc ock cks!

我希望根据某些文本作为输入生成n-gram,并且n生成子序列,是否可以放置一些代码?非常感谢。

答案 1 :(得分:0)

这适合我。

public static void main(final String[] args) {
    final String input = "aaaab aOa baaab c";
    final String[] sections = input.split(" ");
    final int length = 3;

    final List<String> list = new ArrayList<>();
    for (final String section : sections) {
        for (int i = 0; i < section.length(); i++) {
            if (section.length() < length) {
                list.add(section);
                continue;
            }
            final int end = i + length;
            if (end > section.length()) {
                break;
            }
            final String result = section.substring(i, end);
            list.add(result);
        }
    }
    list.stream().forEach(s -> System.out.println(s));
}