Given a range of numbers, print all palindromes in the given range. For example if the given range is {10, 115}, then output should be {11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111}
We can run a loop from min to max and check every number for palindrome. If the number is a palindrome, we can simply print it.
Implementation:
C++
#include<iostream>
using namespace std;
int isPalindrome( int n)
{
int rev = 0;
for ( int i = n; i > 0; i /= 10)
rev = rev*10 + i%10;
return (n==rev);
}
void countPal( int min, int max)
{
for ( int i = min; i <= max; i++)
if (isPalindrome(i))
cout << i << " " ;
}
int main()
{
countPal(100, 2000);
return 0;
}
|
Java
class GFG
{
static int isPalindrome( int n)
{
int rev = 0 ;
for ( int i = n; i > 0 ; i /= 10 )
rev = rev * 10 + i % 10 ;
return (n == rev) ? 1 : 0 ;
}
static void countPal( int min, int max)
{
for ( int i = min; i <= max; i++)
if (isPalindrome(i)== 1 )
System.out.print(i + " " );
}
public static void main(String args[])
{
countPal( 100 , 2000 );
}
}
|
Python3
def isPalindrome(n: int ) - > bool :
rev = 0
i = n
while i > 0 :
rev = rev * 10 + i % 10
i / / = 10
return (n = = rev)
def countPal(minn: int , maxx: int ) - > None :
for i in range (minn, maxx + 1 ):
if isPalindrome(i):
print (i, end = " " )
if __name__ = = "__main__" :
countPal( 100 , 2000 )
|
C#
using System;
class GFG
{
public static int isPalindrome( int n)
{
int rev = 0;
for ( int i = n; i > 0; i /= 10)
{
rev = rev * 10 + i % 10;
}
return (n == rev) ? 1 : 0;
}
public static void countPal( int min,
int max)
{
for ( int i = min; i <= max; i++)
{
if (isPalindrome(i) == 1)
{
Console.Write(i + " " );
}
}
}
public static void Main( string [] args)
{
countPal(100, 2000);
}
}
|
Javascript
<script>
function isPalindrome(n)
{
var rev = 0;
for ( var i = n; Math.trunc(i) > 0; i /= 10)
{
rev = ((rev*10) + (Math.trunc(i)%10));
}
return (n==rev);
}
function countPal(min, max)
{
for ( var i = min; i <=max; i++)
{
if (isPalindrome(i))
document.write(i+ " " );
}
}
countPal(100, 2000);
</script>
|
Output
101 111 121 131 141 151 161 171 181 191 202 212 222 232 242
252 262 272 282 292 303 313 323 333 343 353 363 373 383 393 404
414 424 434 444 454 464 474 484 494 505 515 525 535 545 555 565
575 585 595 606 616 626 636 646 656 666 676 686 696 707 717 727
737 747 757 767 777 787 797 808 818 828 838 848 858 868 878 888
898 909 919 929 939 949 959 969 979 989 999 1001 1111 1221 1331
1441 1551 1661 1771 1881 1991
Time Complexity:
Time complexity of function to check if a number N is palindrome or not is O(logN).
We are calling this function each time while iterating from min to max.
So the time complexity will be O(Dlog(M)).
Where,
D= max-min
M = max
Auxiliary Space: O(1)
Approach#2: Using filter
This approach defines a function is_palindrome that checks if a given number is a palindrome. It then defines a function palindrome_range that takes a range of numbers and returns a list of all palindromic numbers in that range using a combination of the range, filter, and list functions.
Algorithm
1. Define a function that takes two integer arguments as the range of numbers to check for palindromes.
2. Create a list of all integers in the range.
3. Use map and lambda to filter the list to only include palindromes.
4. Return the list of palindromes.
C++
#include <iostream>
#include <sstream>
#include <vector>
bool isPalindrome( int num)
{
std::string numStr = std::to_string(num);
return numStr
== std::string(numStr.rbegin(), numStr.rend());
}
std::vector< int > palindromeRange( int start, int end)
{
std::vector< int > nums;
for ( int i = start; i <= end; i++) {
nums.push_back(i);
}
std::vector< int > palindromes;
for ( int x : nums) {
if (isPalindrome(x)) {
palindromes.push_back(x);
}
}
return palindromes;
}
int main()
{
int start = 100;
int end = 2000;
std::vector< int > result = palindromeRange(start, end);
std::cout << "[" ;
for ( size_t i = 0; i < result.size(); ++i) {
std::cout << result[i];
if (i < result.size() - 1) {
std::cout << ", " ;
}
}
std::cout << "]" << std::endl;
return 0;
}
|
Java
import java.util.ArrayList;
import java.util.List;
public class Main {
static boolean isPalindrome( int num) {
String numStr = Integer.toString(num);
return numStr.equals( new StringBuilder(numStr).reverse().toString());
}
static List<Integer> palindromeRange( int start, int end) {
List<Integer> nums = new ArrayList<>();
for ( int i = start; i <= end; i++) {
nums.add(i);
}
List<Integer> palindromes = new ArrayList<>();
for ( int x : nums) {
if (isPalindrome(x)) {
palindromes.add(x);
}
}
return palindromes;
}
public static void main(String[] args) {
int start = 100 ;
int end = 2000 ;
List<Integer> result = palindromeRange(start, end);
System.out.println(result);
}
}
|
Python3
def is_palindrome(num):
return str (num) = = str (num)[:: - 1 ]
def palindrome_range(start, end):
nums = list ( range (start, end + 1 ))
palindromes = list ( filter ( lambda x: is_palindrome(x), nums))
return palindromes
start = 100
end = 2000
print (palindrome_range(start, end))
|
Javascript
function is_palindrome(num) {
return String(num) === String(num).split( "" ).reverse().join( "" );
}
function palindrome_range(start, end) {
let nums = Array.from({length: (end - start) + 1}, (_, i) => i + start);
let palindromes = nums.filter(num => is_palindrome(num));
return palindromes;
}
let start = 100;
let end = 2000;
console.log(palindrome_range(start, end));
|
Output
[101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, 525, 535, 545, 555, 565, 575, 585, 595, 606, 616, 626, 636, 646, 656, 666, 676, 686, 696, 707, 717, 727, 737, 747, 757, 767, 777, 787, 797, 808, 818, 828, 838, 848, 858, 868, 878, 888, 898, 909, 919, 929, 939, 949, 959, 969, 979, 989, 999, 1001, 1111, 1221, 1331, 1441, 1551, 1661, 1771, 1881, 1991]
Time complexity: O(n*k), where n is the number of integers in the range and k is the length of the largest integer in the range.
Auxiliary Space: O(m), where m is the number of palindromes in the range
Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!
Last Updated :
27 Nov, 2023
Like Article
Save Article