【发布时间】:2012-11-06 13:54:15
【问题描述】:
我知道这类问题已经回答过很多次了。虽然我找到了很多可能的答案,但它们仍然没有解决我的问题,即实现将整数数组转换为单个字符串的最快方法。例如:
int[] Result = new int[] { 1753387599, 1353678530, 987001 }
我希望它颠倒过来,所以我认为最好在进一步的代码之前加上
Array.Reverse(Result);
虽然我不从末尾迭代,但相当于倒车,因为我从末尾调用元素。所以我已经这样做了。只是让您知道 - 如果您能想到除我之外的任何其他解决方案,我建议使用此 Array.Reverse,因为解决方案必须颠倒。 我总是只关心数字的最后 9 位数字——比如模 1 000 000 000。这就是我想要得到的:
987001|353678530|753387599
分隔符只是为了现在清楚。我编写了自己的函数,它比使用 .ToString() 快 50%。 tempint - int 数组的当前元素, StrArray - 一个字符串数组。不值得使用 StringBuilder 或求和 字符串,所以最后我只需加入 AnswerArr 的元素即可获得结果。 IntBase - 一个包含 1000 个元素的数组,字符串中的数字从“000”到“999”,索引为 0 到 999。
for (i = 0; i < limit; i++)
{
//Some code here
j = 3 * (limit - i);
//Done always
StrArray[j - 1] = IntBase[tempint % 1000];
if (tempint > 999999)
{
//Done in 99/100 cases
StrArray[j - 2] = IntBase[tempint % 1000000 / 1000];
StrArray[j - 3] = IntBase[tempint % 1000000000 / 1000000];
}
else
{
if (tempint > 999)
{
//Done just once
StrArray[j - 2] = IntBase[tempint % 1000 / 1000];
}
}
}
//Some code here
return string.Join(null, StrArray);
在这部分之前有很多计算,它们完成得非常快。虽然一切都在 714 毫秒内完成,但没有对整数求和,它只有 337 毫秒。
提前感谢您的帮助。
最好的问候, 伦道夫
【问题讨论】:
-
在第一段。我会加粗的。
-
请将您的变量重命名为描述它们的名称。您的代码难以阅读。
-
抱歉,这是我在这里的第一篇文章。好的,现在应该清楚了。
标签: c# arrays string optimization int