如何检查一个数字是否为回文?
任何语言。任何算法。(除了将数字变为字符串,然后反转字符串的算法除外)。
发布于 2008-10-13 22:14:31
这是one of the Project Euler problems。当我在Haskell中解决这个问题时,我完全按照你的建议做了,把数字转换成字符串。然后,很容易就可以检查字符串是不是一个Pallindrom型字符串。如果它表现得足够好,那么为什么还要费心让它变得更复杂呢?作为一个pallindrome是一种词汇属性,而不是数学属性。
发布于 2008-10-13 22:18:20
对于任何给定的数字:
n = num;
rev = 0;
while (num > 0)
{
dig = num % 10;
rev = rev * 10 + dig;
num = num / 10;
}
如果为n == rev
,则num
为回文:
cout << "Number " << (n == rev ? "IS" : "IS NOT") << " a palindrome" << endl;
发布于 2008-10-13 22:26:14
def ReverseNumber(n, partial=0):
if n == 0:
return partial
return ReverseNumber(n // 10, partial * 10 + n % 10)
trial = 123454321
if ReverseNumber(trial) == trial:
print("It's a Palindrome!")
仅适用于整数。从问题陈述中并不清楚是否需要考虑浮点数或前导零。
https://stackoverflow.com/questions/199184
复制相似问题