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++
// CPP implementation of the approach #include<bits/stdc++.h> using namespace std; // Function that returns true if str is a palindrome 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 ; } // Function that returns true if the // generated string is a palindrome bool createStringAndCheckPalindrome( int N) { // sub contains N as a string ostringstream out; out << N; string result = out.str(); string sub = "" + result, res_str = "" ; int sum = 0; // Calculate the sum of the digits while (N > 0) { int digit = N % 10; sum += digit; N = N / 10; } // Repeat the substring until the length // of the resultant string < sum while (res_str.length() < sum) res_str += sub; // If length of the resultant string exceeded sum // then take substring from 0 to sum - 1 if (res_str.length() > sum) res_str = res_str.substr(0, sum); // If the generated string is a palindrome if (isPalindrome(res_str)) return true ; return false ; } // Driver code int main() { int N = 10101; if (createStringAndCheckPalindrome(N)) cout << ( "Yes" ); else cout << ( "No" ); } // This code is contributed by // Shashank_Sharma |
Java
// Java implementation of the approach import java.io.*; class GFG { // Function that returns true if str is a palindrome 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 ; } // Function that returns true if the // generated string is a palindrome static boolean createStringAndCheckPalindrome( int N) { // sub contains N as a string String sub = "" + N, res_str = "" ; int sum = 0 ; // Calculate the sum of the digits while (N > 0 ) { int digit = N % 10 ; sum += digit; N = N / 10 ; } // Repeat the substring until the length // of the resultant string < sum while (res_str.length() < sum) res_str += sub; // If length of the resultant string exceeded sum // then take substring from 0 to sum - 1 if (res_str.length() > sum) res_str = res_str.substring( 0 , sum); // If the generated string is a palindrome if (isPalindrome(res_str)) return true ; return false ; } // Driver code public static void main(String args[]) { int N = 10101 ; if (createStringAndCheckPalindrome(N)) System.out.println( "Yes" ); else System.out.println( "No" ); } } |
Python 3
# Python 3 implementation of the approach # Function that returns true if # str is a palindrome def isPalindrome(s): l = len (s) for i in range (l / / 2 ): if (s[i] ! = s[l - 1 - i]): return False return True # Function that returns true if the # generated string is a palindrome def createStringAndCheckPalindrome(N): # sub contains N as a string sub = "" + chr (N) res_str = "" sum = 0 # Calculate the sum of the digits while (N > 0 ) : digit = N % 10 sum + = digit N = N / / 10 # Repeat the substring until the length # of the resultant string < sum while ( len (res_str) < sum ): res_str + = sub # If length of the resultant string exceeded # sum then take substring from 0 to sum - 1 if ( len (res_str) > sum ): res_str = res_str[ 0 : sum ] # If the generated string is a palindrome if (isPalindrome(res_str)): return True return False # Driver code if __name__ = = "__main__" : N = 10101 if (createStringAndCheckPalindrome(N)): print ( "Yes" ) else : print ( "No" ) # This code is contributed by ita_c |
C#
// C# implementation of the approach using System ; class GFG { // Function that returns true if str is a palindrome 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 ; } // Function that returns true if the // generated string is a palindrome static bool createStringAndCheckPalindrome( int N) { // sub contains N as a string string sub = "" + N, res_str = "" ; int sum = 0; // Calculate the sum of the digits while (N > 0) { int digit = N % 10; sum += digit; N = N / 10; } // Repeat the substring until the length // of the resultant string < sum while (res_str.Length< sum) res_str += sub; // If length of the resultant string exceeded sum // then take substring from 0 to sum - 1 if (res_str.Length > sum) res_str = res_str.Substring(0, sum); // If the generated string is a palindrome if (isPalindrome(res_str)) return true ; return false ; } // Driver code public static void Main() { int N = 10101; if (createStringAndCheckPalindrome(N)) Console.WriteLine( "Yes" ); else Console.WriteLine( "No" ); } // This code is contributed by Ryuga } |
Javascript
<script> // JavaScript implementation of the approach // Function that returns true // if str is a palindrome 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 that returns true if the // generated string is a palindrome function createStringAndCheckPalindrome(N) { // sub contains N as a string let sub = "" + N, res_str = "" ; let sum = 0; // Calculate the sum of the digits while (N > 0) { let digit = N % 10; sum += digit; N = N / 10; } // Repeat the substring until the length // of the resultant string < sum while (res_str.length < sum) res_str += sub; // If length of the resultant string exceeded sum // then take substring from 0 to sum - 1 if (res_str.length > sum) res_str = res_str.substring(0, sum); // If the generated string is a palindrome if (isPalindrome(res_str)) return true ; return false ; } // Driver code let N = 10101; if (createStringAndCheckPalindrome(N)) document.write( "Yes" ); else document.write( "No" ); // This code is contributed by avanitrachhadiya2155 </script> |
Yes
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!