Java StringBuilder有效地删除最后一个字符

时间:2015-11-05 17:40:49

标签: java performance stringbuilder

char删除StringBuilder的最后一次出现的最有效方法是什么?

我目前的解决方案是O(N),但我觉得这个问题可以在不变的时间内解决。

public StringBuilder deleteLastOccurance(StringBuilder builder, char c) {        
    int lastIndex = builder.lastIndexOf(String.valueOf(c));
    if (lastIndex != -1) {
        builder.deleteCharAt(lastIndex); // O(N)
    }
    return builder;
}

1 个答案:

答案 0 :(得分:3)

最后无论如何都是O(n)时间。没有其他方法可以确定最后一个字符而不检查一直到最后。

即使是内部Java API方法也会有相同的底层实现。