1

我有这个问题:

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

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

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

输入:

2
808
2133

输出:

818
2222

我的代码将输入转换为字符串并评估字符串的任一端进行相应调整并向内移动。但是,问题要求它可以采用长达 10^6 位的值,如果我尝试解析大数字,我会得到一个数字格式异常,即

Integer.parseInt(LARGENUMBER);

或者

Long.parseInt(LARGENUMBER);

并且LARGENUMBER超出范围。谁能想到解决方法或如何处理如此大的数字?

4

3 回答 3

5

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

但是,我不会指望它在如此大的尺寸上是有效的。因为它仍然使用O(n^2)乘法和转换算法。

于 2011-10-24T00:01:50.357 回答
5

想想你现在所做的步骤。自从您将数字转换为字符串以进行处理后,您是否看到一些看起来有些多余的东西?

于 2011-10-24T00:03:17.833 回答
2

虽然这个问题涉及整数,但它这样做只是为了限制输入和输出字符和格式。这确实是一个仔细选择的字符串操作问题。既然是这种情况,您实际上不需要将输入实际读取为整数,而只需读取字符串即可。

这将使验证回文变得简单。你唯一需要解决的就是选择下一个更高的。

于 2011-10-24T06:08:38.387 回答