天天看点

阿里笔试题(一)

阿里笔试题(一)

自己写的答题思路,做个记录。反正是没过的,千万别当真,大概率是个反例。

/**
     * 
     * @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;
    }
           

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