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

31 Oct, 2018
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 = 61Output: YESNumbers 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 = 1998Output: NONumbers 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.
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++
Java
Python3
C#
// C++ implementation of the// above approach#include<bits/stdc++.h>using namespace std;  // Function to check if a string // is palindrome or notbool 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 codeint 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 implementation of the above approachimport 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 implementation of # the above approach  # Function to check if a string # is palindrome or notdef 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 codeN = 61;  # Calling function isPalindrome to # check if str is Palindrome or notflag = createString(N)if (flag):    print("YES")else:    print("NO")  # This code is contributed by ihritik
// C# implementation of the// above approachusing System;  class GFG {  // Function to check if a string // is palindrome or notstatic 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 codepublic 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
YES

ihritik
Arrays
palindrome
Strings
Arrays
Strings
palindrome
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Top 50 String Coding Problems for Interviews
Print all the duplicates in the input string
Vigenère Cipher
String class in Java | Set 1
sprintf() in C
Print all subsequences of a string
Convert character array to string in C++
Program to count occurrence of a given character in a string
How to Append a Character to a String in C
Naive algorithm for Pattern Searching