Count the number of digits of palindrome numbers in an array
Last Updated :
16 Dec, 2022
Given an array arr[] with N integers. The task is to count all the digits of all palindrome numbers present in the array.
Examples:
Input: arr[] = {121, 56, 434}
Output: 6
Only 121 and 434 are palindromes
and digitCount(121) + digitCount(434) = 3 + 3 = 6
Input: arr[] = {56, 455, 546, 234}
Output: 0
Approach: For every element of the array, if it is a one digit number then add 1 to the answer for its digit else check if the number is a palindrome. If yes then find the count of its digits and add it to the answer.
Below is the implementation of the above approach:
C++
#include<bits/stdc++.h>
using namespace std;
int reverse( int n)
{
int rev = 0;
while (n > 0)
{
int d = n % 10;
rev = rev * 10 + d;
n = n / 10;
}
return rev;
}
bool isPalin( int n)
{
return (n == reverse(n));
}
int countDigits( int n)
{
int c = 0;
while (n > 0)
{
n = n / 10;
c++;
}
return c;
}
int countPalinDigits( int arr[], int n)
{
int s = 0;
for ( int i = 0; i < n; i++)
{
if (arr[i] < 10 || isPalin(arr[i]))
{
s += countDigits(arr[i]);
}
}
return s;
}
int main()
{
int arr[] = { 121, 56, 434 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << (countPalinDigits(arr, n));
return 0;
}
|
Java
import java.util.*;
class GFG {
static int reverse( int n)
{
int rev = 0 ;
while (n > 0 ) {
int d = n % 10 ;
rev = rev * 10 + d;
n = n / 10 ;
}
return rev;
}
static boolean isPalin( int n)
{
return (n == reverse(n));
}
static int countDigits( int n)
{
int c = 0 ;
while (n > 0 ) {
n = n / 10 ;
c++;
}
return c;
}
static int countPalinDigits( int [] arr, int n)
{
int s = 0 ;
for ( int i = 0 ; i < n; i++) {
if (arr[i] < 10 || isPalin(arr[i])) {
s += countDigits(arr[i]);
}
}
return s;
}
public static void main(String[] args)
{
int [] arr = { 121 , 56 , 434 };
int n = arr.length;
System.out.println(countPalinDigits(arr, n));
}
}
|
Python3
def reverse(n):
rev = 0 ;
while (n > 0 ):
d = n % 10 ;
rev = rev * 10 + d;
n = n / / 10 ;
return rev;
def isPalin(n):
return (n = = reverse(n));
def countDigits(n):
c = 0 ;
while (n > 0 ):
n = n / / 10 ;
c + = 1 ;
return c;
def countPalinDigits(arr, n):
s = 0 ;
for i in range (n):
if (arr[i] < 10 or isPalin(arr[i])):
s + = countDigits(arr[i]);
return s;
arr = [ 121 , 56 , 434 ];
n = len (arr);
print (countPalinDigits(arr, n));
|
C#
using System;
class GFG
{
static int reverse( int n)
{
int rev = 0;
while (n > 0)
{
int d = n % 10;
rev = rev * 10 + d;
n = n / 10;
}
return rev;
}
static bool isPalin( int n)
{
return (n == reverse(n));
}
static int countDigits( int n)
{
int c = 0;
while (n > 0)
{
n = n / 10;
c++;
}
return c;
}
static int countPalinDigits( int [] arr, int n)
{
int s = 0;
for ( int i = 0; i < n; i++)
{
if (arr[i] < 10 || isPalin(arr[i]))
{
s += countDigits(arr[i]);
}
}
return s;
}
public static void Main()
{
int [] arr = { 121, 56, 434 };
int n = arr.Length;
Console.WriteLine(countPalinDigits(arr, n));
}
}
|
Javascript
<script>
function reverse(n)
{
let rev = 0;
while (n > 0)
{
let d = n % 10;
rev = rev * 10 + d;
n = parseInt(n / 10);
}
return rev;
}
function isPalin(n)
{
return (n == reverse(n));
}
function countDigits(n)
{
let c = 0;
while (n > 0)
{
n = parseInt(n / 10);
c++;
}
return c;
}
function countPalinDigits(arr, n)
{
let s = 0;
for (let i = 0; i < n; i++)
{
if (arr[i] < 10 || isPalin(arr[i]))
{
s += countDigits(arr[i]);
}
}
return s;
}
let arr = [ 121, 56, 434 ];
let n = arr.length;
document.write(countPalinDigits(arr, n));
</script>
|
Time Complexity : O(n)
Auxiliary Space: O(1)
Shorter Python Implementation
C++
#include <bits/stdc++.h>
using namespace std;
int countPalinDigits(vector< int > arr)
{
int sum = 0;
for ( int n: arr)
{
string n_str = to_string(n);
int l = n_str.length();
string rev = to_string(n);
reverse(rev.begin(), rev.end());
if (rev == n_str)
sum += l;
}
return sum;
}
int main()
{
vector < int > arr = { 121, 56, 434 };
cout << countPalinDigits(arr) << endl;
}
|
Java
import java.util.*;
class GFG
{
static int countPalinDigits( int [] arr)
{
int sum = 0 ;
for ( int n : arr)
{
String n_str = String.valueOf(n);
int l = n_str.length();
String rev = new StringBuilder( new String(n_str)).reverse().toString();
if (rev.equals(n_str))
sum += l;
}
return sum;
}
public static void main(String[] args)
{
int [] arr = { 121 , 56 , 434 };
System.out.println(countPalinDigits(arr));
}
}
|
Python3
def countPalinDigits(arr):
sum = 0
for n in arr:
n_str = str (n)
l = len (n_str)
if n_str[l:: - 1 ] = = n_str:
sum + = l
return sum
arr = [ 121 , 56 , 434 ];
print (countPalinDigits(arr));
|
C#
using System;
using System.Collections.Generic;
class GFG
{
static int countPalinDigits( int [] arr)
{
int sum = 0;
foreach ( int n in arr)
{
string n_str = Convert.ToString(n);
int l = n_str.Length;
string rev = Convert.ToString(n);
char [] revs = rev.ToCharArray();
Array.Reverse(revs);
rev = new string (revs);
if (rev.Equals(n_str))
sum += l;
}
return sum;
}
public static void Main( string [] args)
{
int [] arr = { 121, 56, 434 };
Console.WriteLine(countPalinDigits(arr));
}
}
|
Javascript
function countPalinDigits(arr)
{
let sum = 0
for (let n of arr)
{
let n_str = "" + n;
let l = n_str.length
let rev = n_str.split( "" ).reverse().join( "" )
if (rev.localeCompare(n_str) == 0)
sum += l
}
return sum
}
let arr = [ 121, 56, 434 ];
console.log(countPalinDigits(arr));
|
Time Complexity : O(n)
Auxiliary Space: O(n)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...