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:

  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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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");
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Output:

YES


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : ihritik



Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.