Generate number with given operation and check if it is palindrome
Last Updated :
16 Dec, 2022
Given an integer N the task is to create a string out of it by repeating the number such that the length of the resultant string is equal to the sum of the digits in the original number.
For eg: If the number is 61 and the sum of the digits is 6 + 1 = 7 so the string generated after repeating 61 will be of 7 length i.e. 6161616.
Examples:
Input: N = 10101
Output: Yes
Length of the string is given by sum of the digits i.e. 1 + 0 + 1 + 0 + 1 = 3.
So the resultant string is “101” which is a palindrome.
Input: N = 123
Output: No
Length of the string will be 1 + 2 3 = 6.
So the resultant string is “123123” which is not a palindrome.
Approach:
- Find the sum of the digits of N and repeat the number till the length of the string becomes equal to this sum.
- Now check if the resultant string is a palindrome or not.
- If it is a palindrome then print Yes.
- Else print No.
Below is the implementation of the above approach:
C++
#include<bits/stdc++.h>
using namespace std;
bool isPalindrome(string str)
{
int len = str.length();
for ( int i = 0; i < len / 2; i++)
{
if (str[i] != str[len - 1 - i])
return false ;
}
return true ;
}
bool createStringAndCheckPalindrome( int N)
{
ostringstream out;
out << N;
string result = out.str();
string sub = "" + result, res_str = "" ;
int sum = 0;
while (N > 0)
{
int digit = N % 10;
sum += digit;
N = N / 10;
}
while (res_str.length() < sum)
res_str += sub;
if (res_str.length() > sum)
res_str = res_str.substr(0, sum);
if (isPalindrome(res_str))
return true ;
return false ;
}
int main()
{
int N = 10101;
if (createStringAndCheckPalindrome(N))
cout << ( "Yes" );
else
cout << ( "No" );
}
|
Java
import java.io.*;
class GFG {
static boolean isPalindrome(String str)
{
int len = str.length();
for ( int i = 0 ; i < len / 2 ; i++) {
if (str.charAt(i) != str.charAt(len - 1 - i))
return false ;
}
return true ;
}
static boolean createStringAndCheckPalindrome( int N)
{
String sub = "" + N, res_str = "" ;
int sum = 0 ;
while (N > 0 ) {
int digit = N % 10 ;
sum += digit;
N = N / 10 ;
}
while (res_str.length() < sum)
res_str += sub;
if (res_str.length() > sum)
res_str = res_str.substring( 0 , sum);
if (isPalindrome(res_str))
return true ;
return false ;
}
public static void main(String args[])
{
int N = 10101 ;
if (createStringAndCheckPalindrome(N))
System.out.println( "Yes" );
else
System.out.println( "No" );
}
}
|
Python 3
def isPalindrome(s):
l = len (s)
for i in range (l / / 2 ):
if (s[i] ! = s[l - 1 - i]):
return False
return True
def createStringAndCheckPalindrome(N):
sub = "" + chr (N)
res_str = ""
sum = 0
while (N > 0 ) :
digit = N % 10
sum + = digit
N = N / / 10
while ( len (res_str) < sum ):
res_str + = sub
if ( len (res_str) > sum ):
res_str = res_str[ 0 : sum ]
if (isPalindrome(res_str)):
return True
return False
if __name__ = = "__main__" :
N = 10101
if (createStringAndCheckPalindrome(N)):
print ( "Yes" )
else :
print ( "No" )
|
C#
using System ;
class GFG {
static bool isPalindrome( string str)
{
int len = str.Length;
for ( int i = 0; i < len / 2; i++) {
if (str[i] != str[len - 1 - i])
return false ;
}
return true ;
}
static bool createStringAndCheckPalindrome( int N)
{
string sub = "" + N, res_str = "" ;
int sum = 0;
while (N > 0) {
int digit = N % 10;
sum += digit;
N = N / 10;
}
while (res_str.Length< sum)
res_str += sub;
if (res_str.Length > sum)
res_str = res_str.Substring(0, sum);
if (isPalindrome(res_str))
return true ;
return false ;
}
public static void Main()
{
int N = 10101;
if (createStringAndCheckPalindrome(N))
Console.WriteLine( "Yes" );
else
Console.WriteLine( "No" );
}
}
|
Javascript
<script>
function isPalindrome(str)
{
let len = str.length;
for (let i = 0; i < len / 2; i++) {
if (str[i] != str[len - 1 - i])
return false ;
}
return true ;
}
function createStringAndCheckPalindrome(N)
{
let sub = "" + N, res_str = "" ;
let sum = 0;
while (N > 0) {
let digit = N % 10;
sum += digit;
N = N / 10;
}
while (res_str.length < sum)
res_str += sub;
if (res_str.length > sum)
res_str = res_str.substring(0, sum);
if (isPalindrome(res_str))
return true ;
return false ;
}
let N = 10101;
if (createStringAndCheckPalindrome(N))
document.write( "Yes" );
else
document.write( "No" );
</script>
|
Share your thoughts in the comments
Please Login to comment...