Open In App

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

Improve
Improve
Like Article
Like
Save
Share
Report

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




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


Output

YES


Last Updated : 24 Feb, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads