Java StringBuilder 高效删除最后一次出现的字符

Java StringBuilder Delete Last Occurance of Character Efficiently

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

我目前的解决方案是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;
}

不管怎样最后都是O(n)的时间。如果不一直检查到最后,就没有其他方法可以确定最后一个字符。

甚至内部 java API 方法也将具有相同的底层实现。