📌  相关文章
📜  通过生成二进制字符串的所有排列获得的不同数字

📅  最后修改于: 2021-10-27 07:04:09             🧑  作者: Mango

给定一个二进制字符串S ,任务是打印所有不同的十进制数,这些数可以通过生成二进制字符串的所有排列来获得。

例子:

方法:这个问题可以用一个Set来解决。请按照以下步骤解决问题:

  • 将给定的字符串转换为字符列表。
  • 使用内置的Python函数itertools 置换这个列表。排列()。
  • 初始化一个空字符串s。
  • 遍历排列列表并对每个排列执行以下步骤:
    • 遍历字符并将它们添加到字符串。
    • 将此二进制字符串转换为等效的十进制
    • 将得到的当前十进制值插入到一个集合中。
  • 最后,打印集合中存在的数字。

下面是上述方法的实现:

Python3
# Python3 program for the above approach
 
from itertools import permutations
 
# Function to convert binary
# string to equivalent decimal
def binToDec(n):
     
    num = n
    dec_value = 0
 
    # Initializing base
    # value to 1, i.e 2 ^ 0
    base1 = 1
 
    len1 = len(num)
     
    for i in range(len1 - 1, -1, -1):
         
        if (num[i] == '1'):
            dec_value += base1
         
        base1 = base1 * 2
 
    # Return the resultant
    # decimal number
    return dec_value
 
# Function to print all distinct
# decimals represented by the
# all permutations of the string
def printDecimal(permute):
     
    # Set to store distinct
    # decimal representations
    allDecimals = set()
     
    # Iterate over all permutations
    for i in permute:
         
        # Initialize an empty string
        s = ""
         
        # Traverse the list
        for j in i:
           
            # Add each element
            # to the string
            s += j
             
        # Convert the current binary
        # representation to decimal
        result = binToDec(s)
         
        # Add the current decimal
        # value into the set
        allDecimals.add(result)
      
    # Print the distinct decimals  
    print(allDecimals)   
 
# Utility function to print all
# distinct decimal representations
# of all permutations of string
def totalPermutations(string):
   
    # Convert string to list
    lis = list(string)
     
    # Built in method to store all
    # the permutations of the list
    permutelist = permutations(lis)
     
    printDecimal(permutelist)
 
 
# Given binary  string
binarystring = '1010'
 
# Function call to print all distinct
# decimal values represented by all
# permutations of the given string
totalPermutations(binarystring)


输出:
{3, 5, 6, 9, 10, 12}

时间复杂度: O(N * N!)
辅助空间: O(N * N!)

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程