 Open in App
Not now

# Check if it is possible to create a palindrome string from given N

• Last Updated : 05 Sep, 2022

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.

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

Approach:

1. Obtain the substring corresponding to given number N and maintain its digit’s sum.
2. Append the substring till its length becomes equal to the sum of digits of N.
3. Check if the string obtained is Palindrome or not.
4. If it is a Palindrome, print YES.
5. Else, print NO.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the``// above approach``#include``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`

Output

`YES`

My Personal Notes arrow_drop_up