# Print all palindromes in a given range

The problem is to find and print all palindrome numbers within a given range. A palindrome number is a number that remains the same when its digits are reversed. For example, 121 and 454 are palindrome numbers because their digits remain the same when reversed.

## Problem Statement and Example

Given a range [s, e] (inclusive), the task is to find and print all palindrome numbers in that range. For instance, if the range is [50, 300], the output should be:

``````Palindromes in range (50 300) is
55 66 77
88 99 101
111 121 131
141 151 161
171 181 191
202 212 222
232 242 252
262 272 282
292
``````

Similarly, for the range [1000, 1200], the output should be:

``````Palindromes in range (1000 1200) is
1001 1111
``````

## Pseudocode

``````function reverse(number):
result = 0
while number > 0:
result = (result * 10) + (number % 10)
number = number / 10
return result

function palindromesInRange(s, e):
if s < 0 or e < 0:
return
count = 0
print "Palindromes in range (" + s + " " + e + ") is"
for i from s to e - 1:
if reverse(i) == i:
count = count + 1
print i
if count % 3 == 0:
print new line
if count == 0:
print "None"

main:
palindromesInRange(50, 300)
palindromesInRange(1000, 1200)
``````

## Algorithm Explanation

1. The `reverse` function takes an integer `number` as input and returns its reversal view. It initializes a variable `result` to 0. Then, it iterates through each digit of the `number` using a while loop and appends each digit to `result` in a reversed manner.

2. The `palindromesInRange` function takes two integers `s` and `e` as input, representing the lower and upper bounds of the range, respectively. It first checks if either `s` or `e` is negative, in which case it returns immediately as the input range is invalid.

3. It initializes a variable `count` to 0, which will be used to track the number of palindrome numbers found within the range.

4. The function then prints the header with the given range.

5. It iterates through each number `i` in the given range from `s` to `e-1`.

6. For each number `i`, it checks if `reverse(i) == i`. If this condition is true, it means `i` is a palindrome number, and it is printed.

7. The `count` variable is incremented, and if the count becomes a multiple of 3, a new line is added to format the output.

8. After the loop, if no palindrome numbers were found (`count == 0`), it prints "None."

## Code Solution

Here given code implementation process.

``````/*
C program for
Print all palindromes in a given range
*/
#include <stdio.h>

// Returns the Reversal view of given number
int reverse(int number)
{
int result = 0;
while (number > 0)
{
// Append digit
result = (result *10) + (number % 10);
//remove last digit
number /= 10;
}
return result;
}
// Handles the request of display all palindrome in given range
void palindromesInRange(int s, int e)
{
if (s < 0 || e < 0)
{
return;
}
int count = 0;
printf("\n Palindromes in range (%d %d) is \n", s, e);
// Execute loop in given range
for (int i = s; i < e; ++i)
{
if (reverse(i) == i)
{
count++;
printf(" %d", i);
if (count % 3 == 0)
{
printf("\n");
}
}
}
if (count == 0)
{
printf("\n None");
}
}
int main(int argc, char
const *argv[])
{
// Test
palindromesInRange(50, 300);
palindromesInRange(1000, 1200);
return 0;
}``````

#### Output

`````` Palindromes in range (50 300) is
55 66 77
88 99 101
111 121 131
141 151 161
171 181 191
202 212 222
232 242 252
262 272 282
292
Palindromes in range (1000 1200) is
1001 1111``````
``````
/*
Java program for
Print all palindromes in a given range
*/
public class Palindrome
{
// Returns the Reversal view of given number
public int reverse(int number)
{
int result = 0;
while (number > 0)
{
// Append digit
result = (result * 10) + (number % 10);
//remove last digit
number /= 10;
}
return result;
}
// Handles the request of display all palindrome in given range
public void palindromesInRange(int s, int e)
{
if (s < 0 || e < 0)
{
return;
}
int count = 0;
System.out.print("\n Palindromes in range (" + s + " " + e + ") is \n");
// Execute loop in given range
for (int i = s; i < e; ++i)
{
if (reverse(i) == i)
{
count++;
System.out.print(" " + i );
if (count % 3 == 0)
{
System.out.print("\n");
}
}
}
if (count == 0)
{
System.out.print("\n None");
}
}
public static void main(String[] args)
{
// Test
}
}``````

#### Output

`````` Palindromes in range (50 300) is
55 66 77
88 99 101
111 121 131
141 151 161
171 181 191
202 212 222
232 242 252
262 272 282
292
Palindromes in range (1000 1200) is
1001 1111``````
``````// Include header file
#include <iostream>
using namespace std;
/*
C++ program for
Print all palindromes in a given range
*/
class Palindrome
{
public:
// Returns the Reversal view of given number
int reverse(int number)
{
int result = 0;
while (number > 0)
{
// Append digit
result = (result *10) + (number % 10);
//remove last digit
number /= 10;
}
return result;
}
// Handles the request of display all palindrome in given range
void palindromesInRange(int s, int e)
{
if (s < 0 || e < 0)
{
return;
}
int count = 0;
cout << "\n Palindromes in range (" << s << " " << e << ") is \n";
// Execute loop in given range
for (int i = s; i < e; ++i)
{
if (this->reverse(i) == i)
{
count++;
cout << " " << i;
if (count % 3 == 0)
{
cout << "\n";
}
}
}
if (count == 0)
{
cout << "\n None";
}
}
};
int main()
{
// Test
return 0;
}``````

#### Output

`````` Palindromes in range (50 300) is
55 66 77
88 99 101
111 121 131
141 151 161
171 181 191
202 212 222
232 242 252
262 272 282
292
Palindromes in range (1000 1200) is
1001 1111``````
``````// Include namespace system
using System;
/*
Csharp program for
Print all palindromes in a given range
*/
public class Palindrome
{
// Returns the Reversal view of given number
public int reverse(int number)
{
int result = 0;
while (number > 0)
{
// Append digit
result = (result * 10) + (number % 10);
//remove last digit
number /= 10;
}
return result;
}
// Handles the request of display all palindrome in given range
public void palindromesInRange(int s, int e)
{
if (s < 0 || e < 0)
{
return;
}
int count = 0;
Console.Write("\n Palindromes in range (" + s + " " + e + ") is \n");
// Execute loop in given range
for (int i = s; i < e; ++i)
{
if (this.reverse(i) == i)
{
count++;
Console.Write(" " + i);
if (count % 3 == 0)
{
Console.Write("\n");
}
}
}
if (count == 0)
{
Console.Write("\n None");
}
}
public static void Main(String[] args)
{
// Test
}
}``````

#### Output

`````` Palindromes in range (50 300) is
55 66 77
88 99 101
111 121 131
141 151 161
171 181 191
202 212 222
232 242 252
262 272 282
292
Palindromes in range (1000 1200) is
1001 1111``````
``````package main
import "fmt"
/*
Go program for
Print all palindromes in a given range
*/

// Returns the Reversal view of given number
func reverse(number int) int {
var result int = 0
for (number > 0) {
// Append digit
result = (result * 10) + (number % 10)
//remove last digit
number = number / 10
}
return result
}
// Handles the request of display all palindrome in given range
func palindromesInRange(s, e int) {
if s < 0 || e < 0 {
return
}
var count int = 0
fmt.Print("\n Palindromes in range (", s, " ", e, ") is \n")
// Execute loop in given range
for i := s ; i < e ; i++ {
if reverse(i) == i {
count++
fmt.Print(" ", i)
if count % 3 == 0 {
fmt.Print("\n")
}
}
}
if count == 0 {
fmt.Print("\n None")
}
}
func main() {

// Test
palindromesInRange(50, 300)
palindromesInRange(1000, 1200)
}``````

#### Output

`````` Palindromes in range (50 300) is
55 66 77
88 99 101
111 121 131
141 151 161
171 181 191
202 212 222
232 242 252
262 272 282
292
Palindromes in range (1000 1200) is
1001 1111``````
``````<?php
/*
Php program for
Print all palindromes in a given range
*/
class Palindrome
{
// Returns the Reversal view of given number
public	function reverse(\$number)
{
\$result = 0;
while (\$number > 0)
{
// Append digit
\$result = (\$result * 10) + (\$number % 10);
//remove last digit
\$number = (int)(\$number / 10);
}
return \$result;
}
// Handles the request of display all palindrome in given range
public	function palindromesInRange(\$s, \$e)
{
if (\$s < 0 || \$e < 0)
{
return;
}
\$count = 0;
echo("\n Palindromes in range (".\$s." ".\$e.") is \n");
// Execute loop in given range
for (\$i = \$s; \$i < \$e; ++\$i)
{
if (\$this->reverse(\$i) == \$i)
{
\$count++;
echo(" ".\$i);
if (\$count % 3 == 0)
{
echo("\n");
}
}
}
if (\$count == 0)
{
echo("\n None");
}
}
}

function main()
{
// Test
}
main();``````

#### Output

`````` Palindromes in range (50 300) is
55 66 77
88 99 101
111 121 131
141 151 161
171 181 191
202 212 222
232 242 252
262 272 282
292
Palindromes in range (1000 1200) is
1001 1111``````
``````/*
Node JS program for
Print all palindromes in a given range
*/
class Palindrome
{
// Returns the Reversal view of given number
reverse(number)
{
var result = 0;
while (number > 0)
{
// Append digit
result = (result * 10) + (number % 10);
//remove last digit
number = parseInt(number / 10);
}
return result;
}
// Handles the request of display all palindrome in given range
palindromesInRange(s, e)
{
if (s < 0 || e < 0)
{
return;
}
var count = 0;
process.stdout.write("\n Palindromes in range (" +
s + " " + e + ") is \n");
// Execute loop in given range
for (var i = s; i < e; ++i)
{
if (this.reverse(i) == i)
{
count++;
process.stdout.write(" " + i);
if (count % 3 == 0)
{
process.stdout.write("\n");
}
}
}
if (count == 0)
{
process.stdout.write("\n None");
}
}
}

function main()
{
// Test
}
main();``````

#### Output

`````` Palindromes in range (50 300) is
55 66 77
88 99 101
111 121 131
141 151 161
171 181 191
202 212 222
232 242 252
262 272 282
292
Palindromes in range (1000 1200) is
1001 1111``````
``````#    Python 3 program for
#    Print all palindromes in a given range
class Palindrome :
#  Returns the Reversal view of given number
def reverse(self, number) :
result = 0
while (number > 0) :
#  Append digit
result = (result * 10) + (number % 10)
# remove last digit
number = int(number / 10)

return result

#  Handles the request of display all palindrome in given range
def palindromesInRange(self, s, e) :
if (s < 0 or e < 0) :
return

count = 0
print("\n Palindromes in range (", s ," ", e ,") is ")
i = s
#  Execute loop in given range
while (i < e) :
if (self.reverse(i) == i) :
count += 1
print(" ", i, end = "")
if (count % 3 == 0) :
print(end = "\n")

i += 1

if (count == 0) :
print("\n None", end = "")

def main() :
#  Test

if __name__ == "__main__": main()``````

#### Output

`````` Palindromes in range ( 50   300 ) is
55  66  77
88  99  101
111  121  131
141  151  161
171  181  191
202  212  222
232  242  252
262  272  282
292
Palindromes in range ( 1000   1200 ) is
1001  1111``````
``````#    Ruby program for
#    Print all palindromes in a given range
class Palindrome
#  Returns the Reversal view of given number
def reverse(number)
result = 0
while (number > 0)
#  Append digit
result = (result * 10) + (number % 10)
# remove last digit
number = number / 10
end

return result
end

#  Handles the request of display all palindrome in given range
def palindromesInRange(s, e)
if (s < 0 || e < 0)
return
end

count = 0
print("\n Palindromes in range (", s ," ", e ,") is \n")
i = s
#  Execute loop in given range
while (i < e)
if (self.reverse(i) == i)
count += 1
print(" ", i)
if (count % 3 == 0)
print("\n")
end

end

i += 1
end

if (count == 0)
print("\n None")
end

end

end

def main()
#  Test
end

main()``````

#### Output

`````` Palindromes in range (50 300) is
55 66 77
88 99 101
111 121 131
141 151 161
171 181 191
202 212 222
232 242 252
262 272 282
292
Palindromes in range (1000 1200) is
1001 1111``````
``````/*
Scala program for
Print all palindromes in a given range
*/
class Palindrome()
{
// Returns the Reversal view of given number
def reverse(num: Int): Int = {
var result: Int = 0;
var number = num;
while (number > 0)
{
// Append digit
result = (result * 10) + (number % 10);
//remove last digit
number = number / 10;
}
return result;
}
// Handles the request of display all palindrome in given range
def palindromesInRange(s: Int, e: Int): Unit = {
if (s < 0 || e < 0)
{
return;
}
var count: Int = 0;
print("\n Palindromes in range (" + s + " " + e + ") is \n");
var i: Int = s;
// Execute loop in given range
while (i < e)
{
if (reverse(i) == i)
{
count += 1;
print(" " + i);
if (count % 3 == 0)
{
print("\n");
}
}
i += 1;
}
if (count == 0)
{
print("\n None");
}
}
}
object Main
{
def main(args: Array[String]): Unit = {
var task: Palindrome = new Palindrome();
// Test
}
}``````

#### Output

`````` Palindromes in range (50 300) is
55 66 77
88 99 101
111 121 131
141 151 161
171 181 191
202 212 222
232 242 252
262 272 282
292
Palindromes in range (1000 1200) is
1001 1111``````
``````/*
Swift 4 program for
Print all palindromes in a given range
*/
class Palindrome
{
// Returns the Reversal view of given number
func reverse(_ num: Int) -> Int
{
var result: Int = 0;
var number: Int = num;
while (number > 0)
{
// Append digit
result = (result * 10) + (number % 10);
//remove last digit
number = number / 10;
}
return result;
}
// Handles the request of display all palindrome in given range
func palindromesInRange(_ s: Int, _ e: Int)
{
if (s < 0 || e < 0)
{
return;
}
var count: Int = 0;
print("\n Palindromes in range (", s ," ", e ,") is ");
var i: Int = s;
// Execute loop in given range
while (i < e)
{
if (self.reverse(i) == i)
{
count += 1;
print(" ", i, terminator: "");
if (count % 3 == 0)
{
print(terminator: "\n");
}
}
i += 1;
}
if (count == 0)
{
print("\n None", terminator: "");
}
}
}
func main()
{
// Test
}
main();``````

#### Output

`````` Palindromes in range ( 50   300 ) is
55  66  77
88  99  101
111  121  131
141  151  161
171  181  191
202  212  222
232  242  252
262  272  282
292
Palindromes in range ( 1000   1200 ) is
1001  1111``````
``````/*
Kotlin program for
Print all palindromes in a given range
*/
class Palindrome
{
// Returns the Reversal view of given number
fun reverse(num: Int): Int
{
var result: Int = 0;
var number: Int = num;
while (number > 0)
{
// Append digit
result = (result * 10) + (number % 10);
//remove last digit
number = number / 10;
}
return result;
}
// Handles the request of display all palindrome in given range
fun palindromesInRange(s: Int, e: Int): Unit
{
if (s < 0 || e < 0)
{
return;
}
var count: Int = 0;
print("\n Palindromes in range (" + s + " " + e + ") is \n");
var i: Int = s;
// Execute loop in given range
while (i < e)
{
if (this.reverse(i) == i)
{
count += 1;
print(" " + i);
if (count % 3 == 0)
{
print("\n");
}
}
i += 1;
}
if (count == 0)
{
print("\n None");
}
}
}
fun main(args: Array < String > ): Unit
{
// Test
}``````

#### Output

`````` Palindromes in range (50 300) is
55 66 77
88 99 101
111 121 131
141 151 161
171 181 191
202 212 222
232 242 252
262 272 282
292
Palindromes in range (1000 1200) is
1001 1111``````

## Resultant Output Explanation

The provided code executes the `main` function, which calls `palindromesInRange` twice with different ranges: `palindromesInRange(50, 300)` and `palindromesInRange(1000, 1200)`.

1. `palindromesInRange(50, 300)`:

• It finds and prints all palindrome numbers in the range [50, 300].
• The output shows palindrome numbers in groups of three, separated by spaces. If there are fewer than three numbers in a group, the group ends early.
• The output for this range is displayed as shown in the provided example.
2. `palindromesInRange(1000, 1200)`:

• It finds and prints all palindrome numbers in the range [1000, 1200].
• The output displays the palindrome numbers found in the given range.

## Time Complexity

Let's analyze the time complexity of the code. For a given range [s, e], the `palindromesInRange` function iterates through all the numbers in the range, and for each number, it calls the `reverse` function, which itself iterates through the digits of the number. Therefore, the time complexity can be expressed as follows:

• For each number in the range [s, e], the `reverse` function runs in O(d) time, where d is the number of digits in the number.
• Let n be the difference between e and s (e - s).
• The overall time complexity of the `palindromesInRange` function would be O(n * d), where d is the maximum number of digits in any number within the range.

As for the `reverse` function, its time complexity is O(d), where d is the number of digits in the input number.

Overall, the time complexity of the provided code is O(n * d), where n is the size of the range (e - s) and d is the maximum number of digits in any number within the range.

## Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.