以给定前缀开头的字符串

时间:2012-12-26 13:33:43

标签: java

我有以下代码:

public List<String> function(String pre) {
    List<String> temp = new ArrayList<>();
    for(String str : list) {
        if(str.startsWith(pre)
            temp.add(str);
        if(str.charAt(0) > pre.charAt(0))
            break;
    }
    return temp;
}

该函数应返回以给定前缀开头的所有单词 代码中的列表是一个已排序的ArrayList。此代码的复杂度为O(n) 我该如何改进呢? 例如在log(n)时间内运行。

2 个答案:

答案 0 :(得分:2)

问题是 - 你可以在O(logn)时间内完成吗? 如果list中的一半元素具有所需的前缀怎么办? 您需要将列表的一半添加到新列表中 - 这仍然是O(n)

答案 1 :(得分:0)

是的,你可以

List<String> function(List<String> list, String pre) {
    List<String> temp = new ArrayList<>();
    for(String str : list) {
        if(str.startsWith(pre))
            temp.add(str);
    }
    return temp;
}