从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;
}
答案 0 :(得分:3)
最后无论如何都是O(n)时间。没有其他方法可以确定最后一个字符而不检查一直到最后。
即使是内部Java API方法也会有相同的底层实现。