无法在自动完成中传递测试用例

时间:2017-09-25 23:57:58

标签: java

问题 Autocomptete

Doug正在使用谷歌并且惊讶于看到autocomptete功能如何使用autocomptete搜索数据库以查找可以使用用户提供的字符(作为输入)形成的所有可能单词

对于ex如果用户键入&#c;'在搜索栏中,建议将是

•cisco

•cist

•cissp

•cism

•cisa 他想在他的搜索引擎中应用相同的功能。在他的原型中,他拿了一个字符串作为域,其中包含他可以搜索的所有单词。 作为他的设计师,你必须告诉他如果输入字段中输入了一些东西,他将提供多少autocomptete选项。

这是我对以下问题的代码。

query: {
  bool: {
    should: { wildcard: { field1: "*" + input + "*"}},
    should: { wildcard: { field1: "*" + input + "*"}}
  }
}

但我的解决方案只传递了一个测试用例以及它失败的复杂性案例。 我无法弄清楚它是什么问题。

1 个答案:

答案 0 :(得分:0)

似乎你错过了边界条件。 下面是代码。

public static String[] autoComplete(String input1, String input2){
    List<String> listOfPredictions = new ArrayList<String>();
    String[] emptyArr = new String[0];
    if(isEmpty(input1) || isEmpty(input2)){
        return emptyArr;
    } 
    input1 = input1.trim();
    input2 = input2.trim();
    String tokenizer = " " + input2;
    int fromIdx = 1;
    if(input1.startsWith(input2)){
        fromIdx = input1.indexOf(" ");
        listOfPredictions.add(input1.substring(0, fromIdx));
    }

    while(fromIdx > 0){
        fromIdx = input1.indexOf(tokenizer, fromIdx) + 1;
        if(fromIdx > 0){
            listOfPredictions.add(input1.substring(fromIdx, input1.indexOf(" ", fromIdx)));
        }
    }

    return listOfPredictions.toArray(emptyArr);
}

private static boolean isEmpty(String str){
    return str == null || str.trim().length() == 0;
}