Comprobar si un número está en la base dada o no

Dado un número como una string y una base, verifica si el número dado está en la base dada o no.
Ejemplos:  

Input : str = "1010", base = 2
Output : Yes

Input : str = "1015", base = 2
Output : No

Input : str = "AF87", base = 16
Output : Yes
 

La idea es verificar uno por uno si todos los dígitos están en el rango base dado. En caso afirmativo, devuelve verdadero, de lo contrario, devuelve falso.

C++

// CPP program to check if given
// number is in given base or not.
#include <cstring>
#include <iostream>
using namespace std;
 
bool isInGivenBase(string str, int base)
{
    // Allowed bases are till 16 (Hexadecimal)
    if (base > 16)
    return false;
 
    // If base is below or equal to 10, then all
    // digits should be from 0 to 9.
    else if (base <= 10)
    {
    for (int i = 0; i < str.length(); i++)
        if (!(str[i] >= '0' and
             str[i] < ('0' + base)))
            return false;
    }
 
    // If base is below or equal to 16, then all
    // digits should be from 0 to 9 or from 'A'
    else
    {
    for (int i = 0; i < str.length(); i++)
        if (! ((str[i] >= '0' &&
                str[i] < ('0' + base)) ||                                
                (str[i] >= 'A' &&
                 str[i] < ('A' + base - 10))
            ))                
            return false;
    }
    return true;
}
 
// Driver code
int main()
{
    string str = "AF87";
    if (isInGivenBase(str, 16))
    cout << "Yes";
    else
    cout << "No";
    return 0;
}

Java

// Java program to check if given
// number is in given base or not.
class Geeks {
     
static boolean isInGivenBase(String str, int base)
{
     
    // Allowed bases are till 16 (Hexadecimal)
    if (base > 16)
    return false;
 
    // If base is below or equal to 10, then all
    // digits should be from 0 to 9.
    else if (base <= 10)
    {
    for (int i = 0; i < str.length(); i++)
        if (!(str.charAt(i) >= '0' &&
              str.charAt(i) < ('0' + base)))
            return false;
    }
 
    // If base is below or equal to 16, then all
    // digits should be from 0 to 9 or from 'A'
    else
    {
    for (int i = 0; i < str.length(); i++)
        if (! ((str.charAt(i) >= '0' &&
                str.charAt(i) < ('0' + base)) ||                            
                (str.charAt(i) >= 'A' &&
                 str.charAt(i) < ('A' + base - 10))
            ))            
            return false;
    }
    return true;
}
 
// Driver Class
public static void main(String args[])
 
{
    String str = "AF87";
    if (isInGivenBase(str, 16) == true)
    System.out.println("Yes");
    else
    System.out.println("No");
     
}
}
 
// This code is contributed by ankita_saini

Python3

# Python3 program to check if given
# number is in given base or not.
 
def isInGivenBase(Str, base):
 
    # Allowed bases are till 16 (Hexadecimal)
    if (base > 16):
        return False
 
    # If base is below or equal to 10,
    # then all digits should be from 0 to 9.
    elif (base <= 10):
        for i in range(len(Str)):
            if (Str[i].isnumeric() and
               (ord(Str[i]) >= ord('0') and
                ord(Str[i]) < (ord('0') + base)) == False):
                return False
     
    # If base is below or equal to 16, then all
    # digits should be from 0 to 9 or from 'A'
    else:
        for i in range(len(Str)):
            if (Str[i].isnumeric() and
               ((ord(Str[i]) >= ord('0') and
                 ord(Str[i]) < (ord('0') + base)) or
                (ord(Str[i]) >= ord('A') and
                 ord(Str[i]) < (ord('A') + base - 10))) == False):
                return False
     
    return True
 
# Driver code
Str = "AF87"
if (isInGivenBase(Str, 16)):
    print("Yes")
else:
    print("No")
     
# This code is contributed by Mohit Kumar

C#

// C# program to check if given
// number is in given base or not.
using System;
 
class GFG
{
static bool isInGivenBase(String str,
                          int bas)
{
     
    // Allowed base are
    // till 16 (Hexadecimal)
    if (bas > 16)
    return false;
 
    // If bas is below or equal
    // to 10, then all digits
    // should be from 0 to 9.
    else if (bas <= 10)
    {
    for (int i = 0; i < str.Length; i++)
        if (!(str[i] >= '0' &&
              str[i] < ('0' + bas)))
            return false;
    }
 
    // If base is below or equal
    // to 16, then all digits should
    // be from 0 to 9 or from 'A'
    else
    {
    for (int i = 0; i < str.Length; i++)
        if (! ((str[i] >= '0' &&
                str[i] < ('0' + bas)) ||                        
               (str[i] >= 'A' &&
                str[i] < ('A' + bas - 10))
            ))        
            return false;
    }
    return true;
}
 
// Driver Code
public static void Main(String []args)
{
    String str = "AF87";
    if (isInGivenBase(str, 16) == true)
    Console.WriteLine("Yes");
    else
    Console.WriteLine("No");
}
}
 
// This code is contributed
// by ankita_saini

PHP

<?php
// PHP program to check if given
// number is in given base or not.
 
function isInGivenBase($str, $base)
{
    // Allowed bases are till
    // 16 (Hexadecimal)
    if ($base > 16)
    return false;
 
    // If base is below or equal to
    // 10, then all digits should
    // be from 0 to 9.
    else if ($base <= 10)
    {
    for ($i = 0; $i < strlen($str); $i++)
        if (!($str[$i] >= '0' and
            $str[$i] < ('0' + $base)))
            return false;
    }
 
    // If base is below or equal to 16,
    // then all digits should be from
    // 0 to 9 or from 'A'
    else
    {
    for ($i = 0; $i < strlen($str); $i++)
        if (! (($str[$i] >= '0' &&
                $str[$i] < ('0' + $base)) ||                            
               ($str[$i] >= 'A' &&
                $str[$i] < ('A' + $base - 10))
            ))            
            return false;
    }
    return true;
}
 
// Driver code
$str = "AF87";
 
if (isInGivenBase($str, 16))
    echo "Yes";
else
    echo "No";
 
// This code is contributed by jit_t
?>

Javascript

<script>
 
    // Javascript program to check if given
    // number is in given base or not.
     
    function isInGivenBase(str, bas)
    {
 
        // Allowed base are
        // till 16 (Hexadecimal)
        if (bas > 16)
            return false;
 
        // If bas is below or equal
        // to 10, then all digits
        // should be from 0 to 9.
        else if (bas <= 10)
        {
          for (let i = 0; i < str.length; i++)
              if (!(str[i].charCodeAt() >=
              '0'.charCodeAt() &&
               str[i].charCodeAt() <
               ('0'.charCodeAt() + bas)))
                  return false;
        }
 
        // If base is below or equal
        // to 16, then all digits should
        // be from 0 to 9 or from 'A'
        else
        {
          for (let i = 0; i < str.length; i++)
              if (! ((str[i].charCodeAt() >=
              '0'.charCodeAt() &&
               str[i].charCodeAt() <
               ('0'.charCodeAt() + bas)) ||                        
               (str[i].charCodeAt() >=
               'A'.charCodeAt() &&
                str[i].charCodeAt() <
                ('A'.charCodeAt() + bas - 10))
                  ))        
                  return false;
        }
        return true;
    }
     
    let str = "AF87";
    if (isInGivenBase(str, 16) == true)
        document.write("Yes");
    else
        document.write("No");
 
</script>
Producción

Yes

Complejidad temporal: O(n), donde n es la longitud de la string dada.
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por Premdeep Toppo 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 *