Note:
First, the problem statement did not specify if negative integers qualify as palindromes. Does negative integer such as -1 qualify as a palindrome? Finding out the full requirements of a problem before coding is what every programmer must do. For the purpose of discussion here, we define negative integers as non-palindromes.
Approaches to solve the problem
Approach 1:
The most intuitive approach is to first represent the integer as a string, since it is more convenient to manipulate.
Approach 2:
Reversing the number and checking if it is same, then it is palindrome as well.
Now write isPalindrome(int number) method to see if the number is palindrome:
This is better in only step, that you don't have to convert to string.
Approach 3 : Recursion
First, the problem statement did not specify if negative integers qualify as palindromes. Does negative integer such as -1 qualify as a palindrome? Finding out the full requirements of a problem before coding is what every programmer must do. For the purpose of discussion here, we define negative integers as non-palindromes.
Approaches to solve the problem
Approach 1:
The most intuitive approach is to first represent the integer as a string, since it is more convenient to manipulate.
Approach 2:
Reversing the number and checking if it is same, then it is palindrome as well.
int reverse(int num) {
assert(num >= 0); // for non-negative integers only.
int rev = 0;
while (num != 0) {
rev = rev * 10 + num % 10;
num /= 10;
}
return rev;
}
Now write isPalindrome(int number) method to see if the number is palindrome:
int isPalindrome(int orig)
{
int reversed = 0, n = orig;
reversed = reverse(orig);
/*
while (n > 0)
{
reversed = reversed * 10 + n % 10;
n /= 10;
}*/
return orig == reversed;
}
This is better in only step, that you don't have to convert to string.
Approach 3 : Recursion
bool isPalindrome(int x, int &y) {
if (x < 0) return false;
if (x == 0) return true;
if (isPalindrome(x/10, y) && (x%10 == y%10)) {
y /= 10;
return true;
} else {
return false;
}
}
bool isPalindrome(int x) {
return isPalindrome(x, x);
}







Testing the coment
ReplyDelete