Objective: Given a range of integers, find all the numbers which are palindrome when they are represented in Decimal Value( base 10) and in Octal value(base 8).
Example :
Number : 373 (Decimal) and digits are palindrome. Convert it into Octal which is 565 and that's also palindrome.
Approach:
Solution is quite simple. Traverse through all the numbers in the given range and check if it palindrome, if yes, convert it into Octal and check for palindrome again.
Code:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class DecimalOctalPalindrome { | |
public String DecimalToOctal(int N) { | |
String Oct = ""; | |
while (N > 0) { | |
int x = N % 8; | |
N = N / 8; | |
Oct += x; | |
} | |
return Oct; | |
} | |
public boolean isPalindrome(String S) { | |
int i = 0; | |
int j = S.length() – 1; | |
while (i < j) { | |
if (S.charAt(i) != S.charAt(j)) { | |
return false; | |
} | |
i++; | |
j—; | |
} | |
return true; | |
} | |
public void findBothPalindrome(int start, int end) { | |
for (int i = start; i <= end; i++) { | |
String decimal = String.valueOf(i); | |
if (isPalindrome(decimal)) { | |
String Oct = DecimalToOctal(i); | |
if (isPalindrome(Oct)) { | |
System.out.print(Oct + " "); | |
} | |
} | |
} | |
} | |
public static void main(String[] args) { | |
DecimalOctalPalindrome d = new DecimalOctalPalindrome(); | |
d.findBothPalindrome(1, 2000); | |
} | |
} |
Output:
1 2 3 4 5 6 7 11 171 444 515 565 636 1111