给定一个正整数,写一个函数判断该整数是否是回文。
一个很常见的思路,把整数转化成字符串,然后判断字符串是否是回文。
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或者””这种字符串里面的特殊情况。但是应包含以下三个基本测试用例:
- 不是回文,比如123
- 是回文,长度是奇数,比如121
- 是回文,长度是偶数,比如1221