我一直试图生成此输出:
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);
}
答案 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));
}