【发布时间】:2016-12-27 03:40:20
【问题描述】:
我需要访问int 和long 无法处理的字符串索引中的一个非常大的数字。我不得不使用ulong,但问题是索引器只能处理int 类型。
这是我的代码,我已经标记了错误所在的行。任何想法如何解决这个问题?
string s = Console.ReadLine();
long n = Convert.ToInt64(Console.ReadLine());
var cont = s.Count(x => x == 'a');
Console.WriteLine(cont);
Console.ReadKey();
代码的主要思想是识别字符串中有多少'a's。我还有哪些其他方法可以做到这一点?
编辑:
我不知道字符串索引 Capicity 不能超过 int 类型。我通过用这条 linq 行替换它来修复我的 for 循环
var cont = s.Count(x => x == 'a');
现在因为我的字符串不能超过一定数量。那么我如何重复我的字符串以将其字符附加 1,000,000,000,000 次而不是使用此代码
for (int i = 0; i < 20; i++)
{
s += s;
}
因为这段代码在字符串中生成随机字符数,如果我提出 20 可能会导致溢出,所以我需要调整它以重复自身以使 string[index] = n // 我在上面声明的 long。 例如,如果我的字符串输入是“aba”,n 是 10,那么字符串将是“abaabaabaa” // 总字符数 10
PS:我编辑了原始代码
【问题讨论】:
-
我认为你的程序应该导致 OutOfMemory 异常
-
根据this question,,字符串中的最大字符数不应超过有符号整数 - 因此您永远不需要访问需要 long 或特别是不需要无符号 long 的索引
-
Console.ReadLine()返回超过 2.000.000 个字符?测试需要多长时间?无论如何,如果您真的想这样做,请使用foreach(Char c in s) -
如果你真的需要这样做,StringReader 类会满足你的需要吗?
-
Console.WriteLine(str.Count(s => s == 'a'))