我需要帮助使用Java中的字符串来完成这一任务。给我解释的最好方法就是举个例子。
因此,我想从两个句子(用户的输入)中提取跳过双格,然后能够在相似性方面相互比较。
第一句:“我喜欢青苹果。”第二句:“我喜欢红苹果。”
此外,还有一个名为“距离”的变量,用于获取单词之间的距离。(目前这并不是很重要)
结果
使用3的距离从第1句中提取的跳过二进制数将是:
{我爱},{我绿},{我绿},{爱绿},{爱苹果},{绿苹果}
(共6比克)
使用3的距离从第2句中提取的跳过二进制数将是:
{我爱},{我红},{我红},{爱红},{爱苹果},{红苹果}
(共6比克)
到目前为止,我已经考虑过使用String[]来放置拆分字符串句。
所以我的问题是,从句子中提取这些字元的代码是什么?
提前感谢!
发布于 2016-11-24 03:31:49
基本上,你想从一个单词的句子中找出所有唯一的两个词组合。
这里有一个涉及ArrayList的解决方案:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
public static String[][] skipBigrams(String input) {
String[] tokens = input.replaceAll("[^a-zA-Z ]", "").split("\\s+");
return skipBigrams(tokens);
}
private static String[][] skipBigrams(String[] tokens) {
List<String[]> bigrams = new ArrayList<>();
for (int i = 0; i < tokens.length; i++) {
for (int j = i + 1; j < tokens.length; j++) {
bigrams.add(new String[]{tokens[i], tokens[j]});
}
}
String[][] result = new String[bigrams.size()][2];
result = bigrams.toArray(result);
return result;
}
public static void main(String[] args) {
String s1 = "I love green apples.";
System.out.println(Arrays.deepToString(skipBigrams(s1)));
}
}https://stackoverflow.com/questions/40777425
复制相似问题