阿里笔试题(一)

在这里插入图片描述
自己写的答题思路,做个记录。反正是没过的,千万别当真,大概率是个反例。

/**
     * 
     * @Title: searchKeywordInText
     * @Description: 查询关键字索引
     * @param: @param text
     * @param: @param keywords
     * @param: @return
     * @return: Map<String,String>
     * @throws
     */
    public Map<String, String> searchKeywordInText(String text, List<String> keywords) throws KeyNotFoundException {
        // 存放结果 <key,2_5_7>
        Map<String, String> result = new HashMap<String, String>();
        keywords.forEach(key -> {
            // 筛选包含目标文本的
            if (key.indexOf(text) > 0) {
                // 对keywords按text作分割
                String[] spArr = key.split(text);
                // 同个key可能出现多个目标文本,对位置进行拼接
                StringBuffer indexbuffer = new StringBuffer();
                for (int i = 0; i < spArr.length; i++) {
                    indexbuffer.append(spArr[i].length());
                    if (i + 1 < spArr.length) {
                        // "2_5_7"
                        indexbuffer.append("_");
                    }
                }
                // keywords冲突的话....这里没解决
                result.put(key, indexbuffer.toString());
            }
        });
        if (result.isEmpty()) {
            throw new KeyNotFoundException("目标文件无匹配!");
        }
        return result;
    }

有大佬知道的话,麻烦指点一手,不胜感激!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值