Compruebe si es posible crear una string de palíndromo a partir de N dado

Dado un número N. La tarea es crear una string alfabética en minúsculas a partir de ese número y decir si la string es palíndromo o no. a = 0, b = 1….. y así sucesivamente.

Por ejemplo: si el número es 61, la substring «gb» se imprimirá hasta 7 (6+1) caracteres, es decir, «gbgbgbg» y comprobará si es palíndromo o no.

Nota: Ningún número comenzará con cero. Considere los alfabetos ‘a a j’ solo, es decir, números de un solo dígito del 0 al 9.

Ejemplos :

Entrada: N = 61
Salida:
Los números 6, 1 representan las letras ‘g’, ‘b’ respectivamente. Entonces la substring es ‘gb’ y la suma es 7(6+1). Así, la string alfabética formada es ‘gbgbgbg’ y es un palíndromo.

Entrada: N = 1998
Salida: NO
Los números 1, 9, 8 representan las letras ‘b’, ‘j’ e ‘i’ respectivamente. Entonces la substring es ‘bjji’ y la suma es 27(1+9+9+8). Así, la string alfabética formada es bjjibjjibjjibjjibjjibjjibjj’, y no es un palíndromo.

Acercarse:

  1. Obtenga la substring correspondiente al número N dado y mantenga la suma de sus dígitos.
  2. Agregue la substring hasta que su longitud sea igual a la suma de los dígitos de N.
  3. Comprobar si la string obtenida es Palindrome o no.
  4. Si es un palíndromo, escriba SÍ.
  5. De lo contrario, imprima NO.

A continuación se muestra la implementación del enfoque anterior:

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
Producción:

YES

Publicación traducida automáticamente

Artículo escrito por rachana soma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *