在我看来,它应该是常量(O(1))时间复杂度。但是,有人告诉我,调用stringBuilder.substring()方法时必须实例化一个新的String对象。 (这不是静态方法)。如果是这样,如何在恒定的时间复杂度内获得子字符串?
最佳答案
您不可能在恒定时间内从String
创建StringBuilder
并保持其不变性。另外,从Java 7 Update 25开始,即使String#substring()
也是线性时间,因为结构共享实际上造成了比它避免的麻烦更多:巨大字符串的子字符串保留了对巨大char
数组的引用。
关于java - Java StringBuilder.substring()方法的时间复杂度是多少?如果是线性的,是否有恒定的时间复杂度方法来获取子字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25514062/