📌  相关文章
📜  检查是否可以通过顺序连接给定的N个数字来形成二进制字符串

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

检查是否可以通过顺序连接给定的N个数字来形成二进制字符串

给定一个“n”个数字序列(没有前导零),任务是找出是否可以通过顺序连接这些数字来创建一个二进制字符串。
如果可能,则打印形成的二进制字符串,否则打印“-1”。
例子 :

方法:主要观察是我们只能连接那些仅包含数字“1”和“0”的数字。否则,不可能形成二进制字符串。
以下是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
 
// Function that returns false if
// the number passed as argument contains
// digit(s) other than '0' or '1'
bool isBinary(int n)
{
    while (n != 0) {
        int temp = n % 10;
        if (temp != 0 && temp != 1) {
            return false;
        }
        n = n / 10;
    }
    return true;
}
 
//Function that checks whether the
//binary string can be formed or not
void formBinaryStr(int n, int a[])
{
    bool flag = true;
 
    // Empty string for storing
    // the binary number
    string s = "";
 
    for (int i = 0; i < n; i++) {
 
        // check if a[i] can be a
        // part of the binary string
        if (isBinary(a[i]))
 
            // Conversion of int into string
            s += to_string(a[i]);
        else {
 
            // if a[i] can't be a part
            // then break the loop
            flag = false;
            break;
        }
    }
 
    // possible to create binary string
    if (flag)
        cout << s << "\n";
 
    // impossible to create binary string
    else
        cout << "-1\n";
}
 
// Driver code
int main()
{
 
    int a[] = { 10, 1, 0, 11, 10 };
    int N = sizeof(a) / sizeof(a[0]);
 
    formBinaryStr(N, a);
 
    return 0;
}


Java
// Java  implementation of the approach
import java.util.*;
class Solution
{
// Function that returns false if
// the number passed as argument contains
// digit(s) other than '0' or '1'
static boolean isBinary(int n)
{
    while (n != 0) {
        int temp = n % 10;
        if (temp != 0 && temp != 1) {
            return false;
        }
        n = n / 10;
    }
    return true;
}
 
//Function that checks whether the
//binary String can be formed or not
static void formBinaryStr(int n, int a[])
{
    boolean flag = true;
 
    // Empty String for storing
    // the binary number
    String s = "";
 
    for (int i = 0; i < n; i++) {
 
        // check if a[i] can be a
        // part of the binary String
        if (isBinary(a[i]))
 
            // Conversion of int into String
            s += ""+a[i];
        else {
 
            // if a[i] can't be a part
            // then break the loop
            flag = false;
            break;
        }
    }
 
    // possible to create binary String
    if (flag)
        System.out.print( s + "\n");
 
    // impossible to create binary String
    else
        System.out.print( "-1\n");
}
 
// Driver code
public static void main(String args[])
{
 
    int a[] = { 10, 1, 0, 11, 10 };
    int N = a.length;
 
    formBinaryStr(N, a);
}
}
//contributed by Arnab Kundu


Python3
# Python3 implementation of the approach
 
# Function that returns false if the
# number passed as argument contains
# digit(s) other than '0' or '1'
def isBinary(n):
 
    while n != 0:
        temp = n % 10
        if temp != 0 and temp != 1:
            return False
         
        n = n // 10
     
    return True
 
# Function that checks whether the
# binary string can be formed or not
def formBinaryStr(n, a):
 
    flag = True
 
    # Empty string for storing
    # the binary number
    s = ""
    for i in range(0, n):
 
        # check if a[i] can be a
        # part of the binary string
        if isBinary(a[i]) == True:
             
            # Conversion of int into string
            s += str(a[i])
         
        else:
            # if a[i] can't be a part
            # then break the loop
            flag = False
            break
 
    # possible to create binary string
    if flag == True:
        print(s)
 
    # impossible to create binary string
    else:
        cout << "-1\n"
 
# Driver code
if __name__ == "__main__":
 
    a = [10, 1, 0, 11, 10]
    N = len(a)
 
    formBinaryStr(N, a)
 
# This code is contributed by Rituraj Jain


C#
// C#  implementation of the approach
using System;
 
public class Solution
{
// Function that returns false if
// the number passed as argument contains
// digit(s) other than '0' or '1'
public static bool isBinary(int n)
{
    while (n != 0)
    {
        int temp = n % 10;
        if (temp != 0 && temp != 1)
        {
            return false;
        }
        n = n / 10;
    }
    return true;
}
 
//Function that checks whether the 
//binary String can be formed or not
public static void formBinaryStr(int n, int[] a)
{
    bool flag = true;
 
    // Empty String for storing
    // the binary number
    string s = "";
 
    for (int i = 0; i < n; i++)
    {
 
        // check if a[i] can be a
        // part of the binary String
        if (isBinary(a[i]))
        {
 
            // Conversion of int into String
            s += "" + a[i];
        }
        else
        {
 
            // if a[i] can't be a part
            // then break the loop
            flag = false;
            break;
        }
    }
 
    // possible to create binary String
    if (flag)
    {
        Console.Write(s + "\n");
    }
 
    // impossible to create binary String
    else
    {
        Console.Write("-1\n");
    }
}
 
// Driver code
public static void Main(string[] args)
{
 
    int[] a = new int[] {10, 1, 0, 11, 10};
    int N = a.Length;
 
    formBinaryStr(N, a);
}
}
 
// This code is contributed by Shrikant13


PHP


Javascript


输出:
10101110