📌  相关文章
📜  检查一个数字是否在给定的基础上

📅  最后修改于: 2022-05-13 01:57:07.545000             🧑  作者: Mango

检查一个数字是否在给定的基础上

给定一个数字作为字符串和一个基数,检查给定的数字是否在给定的基数内。
例子:

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

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

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

这个想法是一一检查所有数字是否在给定的基本范围内。如果是,则返回 true,否则返回 false。

C++
// CPP program to check if given
// number is in given base or not.
#include 
#include 
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
 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


输出:
Yes