首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HashSet包含

HashSet包含
EN

Stack Overflow用户
提问于 2015-04-30 05:07:56
回答 1查看 163关注 0票数 0

我有一组关键字,我有一个字符串,其中包含由'/‘分隔的关键字实例。例如:“食品”或“汽车”是关键词,“/食品/燕麦/水果”,“/轮胎/汽车/车轮”是字符串。关键字总数为5500个。我需要标记这个字符串‘合格’,如果它至少有一个5550关键字在它。我可以做的一种方法是在hashSet中加载所有5500个关键字,并将字符串拆分为标记,并检查hashSet是否包含每个标记。如果查找匹配,我将该字符串标记为“合格”。

在性能方面,有没有更好的解决方案?

EN

回答 1

Stack Overflow用户

发布于 2015-04-30 08:28:37

令牌匹配的简化解决方案可以是

代码语言:javascript
复制
public class REPL {

    private static final HashSet<String> keyWords = new HashSet<>();

    public static void main(String[] args) {
        keyWords.add("food");
        keyWords.add("car");

        String[] strings = {
            "/food/oatmeal/fruits",
            "/tyre/car/wheel",
            "/steel/nuts/bolts",
            "/cart/handle/grill"
        };

        for (String s : strings) {
            System.out.printf("string: %-20s  ", s);
            if (isEligible(s)) {
                System.out.println("eligible: true");
            } else {
                System.out.println("eligible: false");
            }
        }
    }

    private static boolean isEligible(String s) {
        StringTokenizer st = new StringTokenizer(s, "/");
        while (st.hasMoreTokens()) {
            if (keyWords.contains(st.nextToken())) {
                return true;
            }
        }
        return false;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29954580

复制
相关文章

相似问题

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