一点一点前进...

0%

判断一个整数是否是回文

给定一个正整数,写一个函数判断该整数是否是回文。
一个很常见的思路,把整数转化成字符串,然后判断字符串是否是回文。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static bool IsPalindrome_solution1(int number)
{
return IsPalindrome(number.ToString());
}

static bool IsPalindrome(string s)
{
if (string.IsNullOrEmpty(s))
{
return true;
}

if (s.Length == 1)
{
return true;
}

return s[0] == s[s.Length - 1] && IsPalindrome(s.Substring(1, s.Length - 2));
}

这个题目限定了输入是一个整数,所以我们可以通过循环把这个数的回文数值计算出来,判断原先的整数和反转之后的整数是否相等。

1
2
3
4
5
6
7
8
9
10
11
12
13
static bool IsPalindrome_solution2(int number)
{
int copy = number;
int reverted = 0;

while (number != 0)
{
reverted = reverted * 10 + number % 10;
number /= 10;
}

return copy == reverted;
}

关于测试用例,由于是正整数,不用考虑null或者””这种字符串里面的特殊情况。但是应包含以下三个基本测试用例:

  1. 不是回文,比如123
  2. 是回文,长度是奇数,比如121
  3. 是回文,长度是偶数,比如1221