What is complexity of length() function in String class of Java?

旧街凉风 提交于 2020-12-29 09:36:11

问题


Is it O(n) or O(1) (By saving length in a private variable during string allocation to the object).

if it is O(n), does it mean that the complexity of following code is O(n^2)?

for(int i=0; i<s.length()-1;i++){
    //some code here!
}

回答1:


It is O(1) as the length is already known to String instance.

From JDK 1.6 it is visible.

public int length() {
    return count;
}

Update

It is important to understand why they can cache the value of count and keep using same value for count. The reason lies in a great decision they took when designing String, its Immutability.




回答2:


In Java any String is backed up by an final array. So it is simple to just return the array length. So it is O(1) complexity. And if you think in your code

for(int i=0; i<s.length()-1;i++){
    //some code here!
}

s.length() is called for every iteration then you are not right. Modern compiler optimizes this type of call and changes s.length() to constant number(i.e the length of the String instance).




回答3:


String internally maintains an array of characters and length of the array is a property of array object hence O(1) as its simple reading of property.




回答4:


The complexity is O(1) Since String class have the length as a field. It's not O(n^2).



来源:https://stackoverflow.com/questions/20264227/what-is-complexity-of-length-function-in-string-class-of-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!