首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跳过Java字符串中的比克(比较两句话)

跳过Java字符串中的比克(比较两句话)
EN

Stack Overflow用户
提问于 2016-11-24 03:02:37
回答 1查看 416关注 0票数 1

我需要帮助使用Java中的字符串来完成这一任务。给我解释的最好方法就是举个例子。

因此,我想从两个句子(用户的输入)中提取跳过双格,然后能够在相似性方面相互比较。

第一句:“我喜欢青苹果。”第二句:“我喜欢红苹果。”

此外,还有一个名为“距离”的变量,用于获取单词之间的距离。(目前这并不是很重要)

结果

使用3的距离从第1句中提取的跳过二进制数将是:

{我爱},{我绿},{我绿},{爱绿},{爱苹果},{绿苹果}

(共6比克)

使用3的距离从第2句中提取的跳过二进制数将是:

{我爱},{我红},{我红},{爱红},{爱苹果},{红苹果}

(共6比克)

到目前为止,我已经考虑过使用String[]来放置拆分字符串句。

所以我的问题是,从句子中提取这些字元的代码是什么?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-24 03:31:49

基本上,你想从一个单词的句子中找出所有唯一的两个词组合。

这里有一个涉及ArrayList的解决方案:

代码语言:javascript
复制
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)));
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40777425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档