String.Join 文档 StringBuilder 文档
这两天刷 Leedcode 做到一道 String 的题时突然想到这俩对比的问题,于是查了一下资料并简单对比了一下。
首先对于 151. Reverse Words in a String 这道题而言,对比提交结果如下:
明显 StringBuilder 更快,并且更省内存。
// Join
public static string ReverseWords(string s)
{
var sArr = s.Split(' ');
var joinStr ="";
for (var i = sArr.Count() - ; i >= ; i--)
{
if (sArr[i].ToString() != "")
{
joinStr = string.Join(" ", joinStr, sArr[i]);
}
}
return joinStr.Trim();
} // StringBuilder
public string ReverseWords2(string s)
{
var sArr = s.Split(' ');
var sb = new StringBuilder();
for (var i = sArr.Count() - ; i >= ; i--)
{
if (sArr[i].ToString() != "")
{
sb.Append(sArr[i]);
if (i != ) sb.Append(" ");
}
}
return sb.ToString().Trim();
}
那么什么情况下Join会更快呢?
答: 在你已经有一个字符串数组,并且要以分隔符合并的情况下, Join 是最快的方法。 也就是 : Join(String, String[]) 的方法。
当然了,无论这两种方法用哪一种,肯定都是优于 "string1" + " " + "string2" 这样直接又粗暴的方式的。
具体证明和更多讨论请参考: https://*.com/questions/585860/string-join-vs-stringbuilder-which-is-faster