[在计算算法的空间复杂度时,我们被告知找出额外空间的最简单方法是创建数据结构,如Set,Map,Stack等。
以下面的代码为例,它崇敬字符串(在Java中)
private String reverse(String string){
if (string == null || string.length() == 0) return string;
char[] strArray = string.toCharArray(); // Does this consume space?
int first = 0, last = strArray.length - 1;
while (first < last){
char temp = strArray[first];
strArray[first++] = strArray[last];
strArray[last--] = temp;
}
return String.valueOf(strArray);
}
将str转换为字符数组会消耗空间
根据String
's javadoc,String
创建“一个新分配的字符数组,其长度是此字符串的长度,其内容被初始化为包含此字符串表示的字符序列”。因此,调用toCharArray
具有O(n)空间复杂度。