Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串时间复杂度_Java_C#_Python_String_Data Structures - Fatal编程技术网

Java 字符串时间复杂度

Java 字符串时间复杂度,java,c#,python,string,data-structures,Java,C#,Python,String,Data Structures,假设字符串都是相同长度的(称为x),并且有n个字符串。 在每次连接时,将创建字符串的新副本,并逐字符复制这两个字符串。第一次迭代要求我们复制x个字符。第二次迭代需要复制2个字符。第三次迭代需要3x,以此类推。因此,总时间为O(x+2x+…+nx)。这将减少到O(xn^2) 1) 我无法从书中的答案中理解他们是如何在第三次迭代中获得3个字符,在第四次迭代中获得4个字符的。字符串是不可变的,并且在每个语句变量赋值中创建新的字符串对象。 然后,is应该逐个char复制字符串的前一个值和w的值。我又得到

假设字符串都是相同长度的(称为x),并且有n个字符串。 在每次连接时,将创建字符串的新副本,并逐字符复制这两个字符串。第一次迭代要求我们复制x个字符。第二次迭代需要复制2个字符。第三次迭代需要3x,以此类推。因此,总时间为O(x+2x+…+nx)。这将减少到O(xn^2)

1) 我无法从书中的答案中理解他们是如何在第三次迭代中获得3个字符,在第四次迭代中获得4个字符的。字符串是不可变的,并且在每个语句变量赋值中创建新的字符串对象。 然后,is应该逐个char复制字符串的前一个值和w的值。我又得到了2个字符。
谢谢大家!

在第1次迭代中,
语句
有0个字符,
w
有x个字符,因此您必须复制x个字符

在第二次迭代中,
语句
有x个字符,
w
有x个字符,因此您必须复制2*x个字符

在第三次迭代中,
语句
有2*x个字符,
w
有x个字符,因此您必须复制3*x个字符

在第四次迭代中,
语句
有3*x个字符,
w
有x个字符,因此您必须复制4*x个字符


等等…

字符串本身是不可变的,但引用不是

假设下一个例子:

public String joinWords(String[] words)
{ 
     String sentence = "";
     for (String w : words)
     {
        sentence = sentence + w;  
     }
     return sentence;
}
String s = "1";
s = s + "2";
s
将包含值
“12”
,但字符串
“1”
不会更改。 我们可以在下一个示例中进行检查:

public String joinWords(String[] words)
{ 
     String sentence = "";
     for (String w : words)
     {
        sentence = sentence + w;  
     }
     return sentence;
}
String s = "1";
s = s + "2";
s
再次等于
“12”
。我们可以检查
sBak
,以确保
“1”
没有更改

现在回到你的例子。假设
words={“第一”、“第二”、“第三”}

语句
语句=语句+w;
更新
语句
变量。在第一次迭代后,它将是
“+”first”
,即
“first”
。在第二次迭代后,它将等于
“first”+“second”
,依此类推


<> >由<代码>语句< /C> >所引用的字符串长度将增加(每次语句将指向不同的字符串)。

您忘记了C++、JavaScript和Scala标签…@汤姆,好评论Melt……真的很喜欢它。