Check if it is possible to create a palindrome string from given N
Given a number N. The task is to create an alphabetical string in lower case from that number and tell whether the string is palindrome or not. a = 0, b = 1….. and so on.
For eg: If the number is 61 the substring “gb” will be printed till 7 (6+1) characters i.e. “gbgbgbg” and check if palindrome or not.
Note: No number will start with zero. Consider alphabets ‘ a to j ‘ only i.e. single digit numbers from 0 to 9.
Examples:
Input: N = 61
Output: YES
Numbers 6, 1 represent letters ‘g’, ‘b’ respectively. So the substring is ‘gb’ and the sum is 7(6+1). Thus the alphabetical string formed is ‘gbgbgbg’, and is a palindrome.Input: N = 1998
Output: NO
Numbers 1, 9, 8 represent letters ‘b’, ‘j’ and ‘i’ respectively. So the substring is ‘bjji’ and sum is 27(1+9+9+8). Thus the alphabetical string formed is bjjibjjibjjibjjibjjibjjibjj’, and is not a palindrome.
Approach:
- Obtain the substring corresponding to given number N and maintain its digit’s sum.
- Append the substring till its length becomes equal to the sum of digits of N.
- Check if the string obtained is Palindrome or not.
- If it is a Palindrome, print YES.
- Else, print NO.
Below is the implementation of the above approach:
C++
// C++ implementation of the // above approach #include<bits/stdc++.h> using namespace std; // Function to check if a string // is palindrome or not bool isPalindrome(string s) { // String that stores characters // of s in reverse order string s1 = "" ; // Length of the string s int N = s.length(); for ( int i = N - 1; i >= 0; i--) s1 += s[i]; if (s == s1) return true ; return false ; } bool createString( int N) { string str = "" ; string s = to_string(N); // String used to form substring // using N string letters = "abcdefghij" ; // Variable to store sum // of digits of N int sum = 0; string substr = "" ; // Forming the substring // by traversing N for ( int i = 0; i < s.length(); i++) { int digit = s[i] - '0' ; substr += letters[digit]; sum += digit; } // Appending the substr to str till // it's length becomes equal to sum while (str.length() <= sum) { str += substr; } // Trimming the string str so that // it's length becomes equal to sum str = str.substr(0, sum); return isPalindrome(str); } // Driver code int main() { int N = 61; // Calling function isPalindrome to // check if str is Palindrome or not bool flag = createString(N); if (flag) cout << "YES" ; else cout << "NO" ; } // This code is contributed by ihritik |
Java
// Java implementation of the above approach import java.io.*; import java.util.*; public class GFG { // Function to check if a string is palindrome or not static boolean isPalindrome(String s) { // String that stores characters // of s in reverse order String s1 = "" ; // Length of the string s int N = s.length(); for ( int i = N - 1 ; i >= 0 ; i--) s1 += s.charAt(i); if (s.equals(s1)) return true ; return false ; } static boolean createString( int N) { String str = "" ; String s = "" + N; // String used to form substring using N String letters = "abcdefghij" ; // Variable to store sum of digits of N int sum = 0 ; String substr = "" ; // Forming the substring by traversing N for ( int i = 0 ; i < s.length(); i++) { int digit = s.charAt(i) - '0' ; substr += letters.charAt(digit); sum += digit; } // Appending the substr to str // till it's length becomes equal to sum while (str.length() <= sum) { str += substr; } // Trimming the string str so that // it's length becomes equal to sum str = str.substring( 0 , sum); return isPalindrome(str); } // Driver code public static void main(String args[]) { int N = 61 ; // Calling function isPalindrome to // check if str is Palindrome or not boolean flag = createString(N); if (flag) System.out.println( "YES" ); else System.out.println( "NO" ); } } |
Python3
# Python3 implementation of # the above approach # Function to check if a string # is palindrome or not def isPalindrome(s): # String that stores characters # of s in reverse order s1 = "" # Length of the string s N = len (s) i = (N - 1 ) while (i > = 0 ): s1 + = s[i] i = i - 1 if (s = = s1): return True return False def createString(N): s2 = "" s = str (N) # String used to form # substring using N letters = "abcdefghij" # Variable to store sum # of digits of N sum = 0 substr = "" # Forming the substring # by traversing N for i in range ( 0 , len (s)) : digit = int (s[i]) substr + = letters[digit] sum + = digit # Appending the substr to str till # it's length becomes equal to sum while ( len (s2) < = sum ): s2 + = substr # Trimming the string str so that # it's length becomes equal to sum s2 = s2[: sum ] return isPalindrome(s2) # Driver code N = 61 ; # Calling function isPalindrome to # check if str is Palindrome or not flag = createString(N) if (flag): print ( "YES" ) else : print ( "NO" ) # This code is contributed by ihritik |
C#
// C# implementation of the // above approach using System; class GFG { // Function to check if a string // is palindrome or not static bool isPalindrome(String s) { // String that stores characters // of s in reverse order String s1 = "" ; // Length of the string s int N = s.Length; for ( int i = N - 1; i >= 0; i--) s1 += s[i]; if (s.Equals(s1)) return true ; return false ; } static bool createString( int N) { String str = "" ; String s = "" + N; // String used to form substring // using N String letters = "abcdefghij" ; // Variable to store sum // of digits of N int sum = 0; String substr = "" ; // Forming the substring // by traversing N for ( int i = 0; i < s.Length; i++) { int digit = s[i] - '0' ; substr += letters[digit]; sum += digit; } // Appending the substr to str till // it's length becomes equal to sum while (str.Length <= sum) { str += substr; } // Trimming the string str so that // it's length becomes equal to sum str = str.Substring(0, sum); return isPalindrome(str); } // Driver code public static void Main() { int N = 61; // Calling function isPalindrome to // check if str is Palindrome or not bool flag = createString(N); if (flag) Console.WriteLine( "YES" ); else Console.WriteLine( "NO" ); } } // This code is contributed // by ihritik |
Javascript
// JavaScript implementation of the above approach // Function to check if a string // is palindrome or not function isPalindrome(s) { // String that stores characters // of s in reverse order let s1 = "" ; // Length of the string s let N = s.length; let i = (N - 1); while (i >= 0) { s1 += s[i]; i = i - 1; } if (s == s1) { return true ; } return false ; } function createString(N) { let s2 = "" ; let s = N.toString(); // String used to form // substring using N let letters = "abcdefghij" ; // Variable to store sum // of digits of N let sum = 0; let substr = "" ; // Forming the substring // by traversing N for (let i = 0; i < s.length; i++) { let digit = parseInt(s[i]); substr += letters[digit]; sum += digit; } // Appending the substr to str till // it's length becomes equal to sum while (s2.length <= sum) { s2 += substr; } // Trimming the string str so that // it's length becomes equal to sum s2 = s2.substring(0, sum); return isPalindrome(s2); } // Driver code let N = 61; // Calling function isPalindrome to // check if str is Palindrome or not let flag = createString(N); if (flag) { console.log( "YES" ); } else { console.log( "NO" ); } // This code is contributed by codebraxnzt |
YES
Please Login to comment...