Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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_Largenumber - Fatal编程技术网

Java 处理大量数据

Java 处理大量数据,java,largenumber,Java,Largenumber,我有一个问题: 如果从左到右和从右到左读取时,正整数在十进制中的表示形式相同,则称为回文。对于给定的不超过1000000位的正整数K,将大于K的最小回文值写入输出。显示的数字始终不带前导零。 输入 第一行包含整数t,即测试用例的数量。整数K在接下来的t行中给出。 输出 对于每个K,输出大于K的最小回文。 范例 输入: 2 808 2133 输出: 818 2222 我的代码将输入转换为字符串,并对字符串的任一端进行相应的调整并向内移动。然而,这个问题要求它可以使用10^6位长的值,如果我试图

我有一个问题:

如果从左到右和从右到左读取时,正整数在十进制中的表示形式相同,则称为回文。对于给定的不超过1000000位的正整数K,将大于K的最小回文值写入输出。显示的数字始终不带前导零。 输入

第一行包含整数t,即测试用例的数量。整数K在接下来的t行中给出。 输出

对于每个K,输出大于K的最小回文。 范例

输入:

2
808
2133
输出:

818
2222
我的代码将输入转换为字符串,并对字符串的任一端进行相应的调整并向内移动。然而,这个问题要求它可以使用10^6位长的值,如果我试图解析大的数字,我会得到一个数字格式异常,即

Integer.parseInt(LARGENUMBER);


LARGENUMBER超出了范围。有人能想出一个解决办法或如何处理如此大的数字吗?

您可能可以使用该类来处理这样的大整数


然而,我不会指望它在如此庞大的规模上是有效的。因为它仍然使用^2算法进行乘法和转换。

您可能可以使用该类来处理这样的大整数


然而,我不会指望它在如此庞大的规模上是有效的。因为它仍然使用^2算法进行乘法和转换。

想想你现在做的步骤。您是否看到一些似乎有点多余的东西,因为您正在将数字转换为字符串来处理它?

想想您现在执行的步骤。您是否看到一些似乎有点多余的东西,因为您正在将数字转换为字符串来处理它?

当这个问题涉及整数时,它这样做只是为了限制输入和输出字符以及格式。这实际上是一个仔细选择的字符串操作问题。由于是这种情况,实际上不需要将输入作为整数读取,只需要字符串


这将使验证回文变得简单。您需要解决的唯一问题是选择下一个更高的整数。

当这个问题涉及整数时,这样做只是为了限制输入和输出字符和格式。这实际上是一个仔细选择的字符串操作问题。由于是这种情况,实际上不需要将输入作为整数读取,只需要字符串


这将使验证回文变得简单。您需要解决的唯一问题是选择下一个更高的数字。

BigInteger只处理长度不超过20位的数字,不是吗?@Mead3000 BigInteger理论上可以处理内存所能处理的最大数字。BigInteger只处理长度不超过20位的数字,不是吗?@Mead3000 biginger理论上可以处理你的内存所能处理的数字。我不知道你是否听说过spoj.pl,但问题就在那里。。。它在我的计算机上运行良好,但当我将其提交到网站时,它超出了时间限制。所以我假设所有的转换都给了我的算法一个超乎寻常的时间复杂度。你有什么建议吗?我不知道你是否听说过spoj.pl,但问题就在那里。。。它在我的计算机上运行良好,但当我将其提交到网站时,它超出了时间限制。所以我假设所有的转换都给了我的算法一个超乎寻常的时间复杂度。您有什么建议吗?您可以缩小字符串中需要修改的部分,方法是找出哪些部分已经是回文,删除这些部分,将其余部分转换为数字,进行算术运算,然后进行字符串替换。也许不是。只是一个建议。但当每个数字都需要更改时,即89999999-->900000009,则需要考虑整个数字的值。或者我错过了一个技巧,你可以缩小字符串中需要修改的部分,方法是找出哪些部分已经是回文,去掉这些部分,取其余部分,将其转换为数字,进行算术运算,然后进行字符串替换。也许不是。只是一个建议。但当每个数字都需要更改时,即89999999-->900000009,则需要考虑整个数字的值。还是我错过了一个技巧
Long.parseInt(LARGENUMBER);