Generar número con la operación dada y verificar si es palíndromo

Dado un número entero N , la tarea es crear una string a partir de él repitiendo el número de modo que la longitud de la string resultante sea igual a la suma de los dígitos del número original. 
Por ejemplo: si el número es 61 y la suma de los dígitos es 6 + 1 = 7 , la string generada después de repetir 61 tendrá una longitud de 7 , es decir , 6161616 .
Ejemplos: 
 

Entrada: N = 10101 
Salida: Sí  La
longitud de la string viene dada por la suma de los dígitos, es decir, 1 + 0 + 1 + 0 + 1 = 3. 
Entonces, la string resultante es «101», que es un palíndromo.
Entrada: N = 123 
Salida: No La 
longitud de la string será 1 + 2 3 = 6. 
Entonces, la string resultante es «123123», que no es un palíndromo. 
 

Acercarse: 
 

  • Encuentre la suma de los dígitos de N y repita el número hasta que la longitud de la string sea igual a esta suma.
  • Ahora comprueba si la string resultante es un palíndromo o no.
  • Si es un palíndromo, imprima .
  • De lo contrario , imprima No.

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

C++

// CPP implementation of the approach
#include<bits/stdc++.h>
using namespace std;
 
    // Function that returns true if str is a palindrome
    bool isPalindrome(string str)
    {
        int len = str.length();
        for (int i = 0; i < len / 2; i++)
        {
            if (str[i] != str[len - 1 - i])
                return false;
        }
 
        return true;
    }
 
    // Function that returns true if the
    // generated string is a palindrome
    bool createStringAndCheckPalindrome(int N)
    {
 
        // sub contains N as a string
        ostringstream out;
        out << N;
        string result = out.str();
     
        string sub = "" + result, res_str = "";
 
        int sum = 0;
 
        // Calculate the sum of the digits
        while (N > 0)
        {
            int digit = N % 10;
            sum += digit;
            N = N / 10;
        }
 
        // Repeat the substring until the length
        // of the resultant string < sum
        while (res_str.length() < sum)
            res_str += sub;
 
        // If length of the resultant string exceeded sum
        // then take substring from 0 to sum - 1
        if (res_str.length() > sum)
            res_str = res_str.substr(0, sum);
 
        // If the generated string is a palindrome
        if (isPalindrome(res_str))
            return true;
 
        return false;
    }
 
    // Driver code
    int main()
    {
        int N = 10101;
        if (createStringAndCheckPalindrome(N))
            cout << ("Yes");
        else
            cout << ("No");
    }
     
// This code is contributed by
// Shashank_Sharma

Java

// Java implementation of the approach
class GFG {
 
    // Function that returns true if str is a palindrome
    static boolean isPalindrome(String str)
    {
        int len = str.length();
        for (int i = 0; i < len / 2; i++) {
            if (str.charAt(i) != str.charAt(len - 1 - i))
                return false;
        }
 
        return true;
    }
 
    // Function that returns true if the
    // generated string is a palindrome
    static boolean createStringAndCheckPalindrome(int N)
    {
 
        // sub contains N as a string
        String sub = "" + N, res_str = "";
 
        int sum = 0;
 
        // Calculate the sum of the digits
        while (N > 0) {
            int digit = N % 10;
            sum += digit;
            N = N / 10;
        }
 
        // Repeat the substring until the length
        // of the resultant string < sum
        while (res_str.length() < sum)
            res_str += sub;
 
        // If length of the resultant string exceeded sum
        // then take substring from 0 to sum - 1
        if (res_str.length() > sum)
            res_str = res_str.substring(0, sum);
 
        // If the generated string is a palindrome
        if (isPalindrome(res_str))
            return true;
 
        return false;
    }
 
    // Driver code
    public static void main(String args[])
    {
        int N = 10101;
        if (createStringAndCheckPalindrome(N))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}

Python 3

# Python 3 implementation of the approach
 
# Function that returns true if
# str is a palindrome
def isPalindrome(s):
 
    l = len(s)
    for i in range(l // 2):
        if (s[i] != s[l - 1 - i]):
            return False
    return True
 
# Function that returns true if the
# generated string is a palindrome
def createStringAndCheckPalindrome(N):
     
    # sub contains N as a string
    sub = "" + chr(N)
    res_str = ""
 
    sum = 0
 
    # Calculate the sum of the digits
    while (N > 0) :
        digit = N % 10
        sum += digit
        N = N // 10
 
    # Repeat the substring until the length
    # of the resultant string < sum
    while (len(res_str) < sum):
        res_str += sub
 
    # If length of the resultant string exceeded
    # sum then take substring from 0 to sum - 1
    if (len(res_str) > sum):
        res_str = res_str[0: sum]
 
    # If the generated string is a palindrome
    if (isPalindrome(res_str)):
        return True
 
    return False
 
# Driver code
if __name__ == "__main__":
     
    N = 10101
    if (createStringAndCheckPalindrome(N)):
        print("Yes")
    else:
        print("No")
 
# This code is contributed by ita_c

C#

// C# implementation of the approach
 
using System ;
 
class GFG {
 
    // Function that returns true if str is a palindrome
    static bool isPalindrome(string str)
    {
        int len = str.Length;
        for (int i = 0; i < len / 2; i++) {
            if (str[i] != str[len - 1 - i])
                return false;
        }
 
        return true;
    }
 
    // Function that returns true if the
    // generated string is a palindrome
    static bool createStringAndCheckPalindrome(int N)
    {
 
        // sub contains N as a string
        string sub = "" + N, res_str = "";
 
        int sum = 0;
 
        // Calculate the sum of the digits
        while (N > 0) {
            int digit = N % 10;
            sum += digit;
            N = N / 10;
        }
 
        // Repeat the substring until the length
        // of the resultant string < sum
        while (res_str.Length< sum)
            res_str += sub;
 
        // If length of the resultant string exceeded sum
        // then take substring from 0 to sum - 1
        if (res_str.Length > sum)
            res_str = res_str.Substring(0, sum);
 
        // If the generated string is a palindrome
        if (isPalindrome(res_str))
            return true;
 
        return false;
    }
 
    // Driver code
    public static void Main()
    {
        int N = 10101;
        if (createStringAndCheckPalindrome(N))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
    // This code is contributed by Ryuga
}

Javascript

<script>
 
// JavaScript implementation of the approach
     
     // Function that returns true
     // if str is a palindrome
    function isPalindrome(str)
    {
        let len = str.length;
        for (let i = 0; i < len / 2; i++) {
            if (str[i] != str[len - 1 - i])
                return false;
        }
   
        return true;
    }
     
     // Function that returns true if the
    // generated string is a palindrome
    function createStringAndCheckPalindrome(N)
    {
        // sub contains N as a string
        let sub = "" + N, res_str = "";
   
        let sum = 0;
   
        // Calculate the sum of the digits
        while (N > 0) {
            let digit = N % 10;
            sum += digit;
            N = N / 10;
        }
   
        // Repeat the substring until the length
        // of the resultant string < sum
        while (res_str.length < sum)
            res_str += sub;
   
        // If length of the resultant string exceeded sum
        // then take substring from 0 to sum - 1
        if (res_str.length > sum)
            res_str = res_str.substring(0, sum);
   
        // If the generated string is a palindrome
        if (isPalindrome(res_str))
            return true;
   
        return false;
    }
     
    // Driver code
    let N = 10101;
        if (createStringAndCheckPalindrome(N))
            document.write("Yes");
        else
            document.write("No");
 
 
// This code is contributed by avanitrachhadiya2155
 
</script>
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 *