Check if it is possible to create a palindrome string from given N
Last Updated :
24 Feb, 2023
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
Similar Reads
Recursive function to check if a string is palindrome Given a string s, the task is to check if it is a palindrome or not.Examples:Input: s = "abba"Output: YesExplanation: s is a palindromeInput: s = "abc" Output: NoExplanation: s is not a palindromeUsing Recursion and Two Pointers - O(n) time and O(n) spaceThe idea is to recursively check if the strin
8 min read
Check if a given string is Even-Odd Palindrome or not Given a string str, the task is to check if the given string is Even-Odd Palindrome or not. An Even-Odd Palindrome string is defined to be a string whose characters at even indices form a Palindrome while the characters at odd indices also form a Palindrome separately. Examples: Input: str="abzzab"
7 min read
Check if K palindromic strings can be formed from a given string Given a string S of size N and an integer K, the task is to find whether the characters of the string can be arranged to make K palindromic strings simultaneously. Examples: Input: S = "annabelle", K = 2 Output: Yes Explanation: All characters of string S can be distributed into "elble" and "anna" w
7 min read
Check if a given string is a rotation of a palindrome Given a string, check if it is a rotation of a palindrome. For example your function should return true for "aab" as it is a rotation of "aba". Examples: Input: str = "aaaad" Output: 1 // "aaaad" is a rotation of a palindrome "aadaa" Input: str = "abcd" Output: 0 // "abcd" is not a rotation of any p
15+ min read
Rearrange characters to form palindrome if possible Given a string, convert the string to palindrome without any modifications like adding a character, removing a character, replacing a character etc. Examples: Input : "mdaam" Output : "madam" or "amdma" Input : "abb" Output : "bab" Input : "geeksforgeeks" Output : "No Palindrome"Count occurrences of
7 min read
Check given string is oddly palindrome or not | Set 2 Given string str, the task is to check if characters at the odd indexes of str form a palindrome string or not. If not then print "No" else print "Yes". Examples: Input: str = "osafdfgsg", N = 9 Output: Yes Explanation: Odd indexed characters are = { s, f, f, s } so it will make palindromic string,
11 min read