查找通过从Python中的数字中删除最小位数而形成的最大多维数据集
假设我们有一个数字N,我们必须确定可以通过从数字中删除最小位数(可能为0)来生成的最大正方体。我们可以删除给定数字中的任何数字以达到目标。众所周知,如果N=M^3(对于某些整数M),则数字N被称为理想立方体。
因此,如果输入类似于806,则输出将为8,因为我们可以从数字中删除0和6,那么我们将得到8,这是2的理想立方体。
为了解决这个问题,我们将遵循以下步骤-
定义一个功能preProcess()。这将花费n
temp_cubes:=一个新列表
对于范围1至上限n^(1/3)的i
立方=i^3
cubeString:=多维数据集作为字符串
在temp_cubes的末尾插入cubeString
返回temp_cubes
定义一个功能solve()。这将需要num,temp_cubes
反向temp_cubes
totalCubes:=temp_cubes的大小
对于范围为0到totalCubes的i,执行
如果num[j]与temp[index]相同,则
如果digitsInCube与索引相同,则
索引:=索引+1
返回温度
temp:=temp_cubes[i]
digitsInCube:=临时大小
索引:=0
digitsInNumber:=num的大小
对于0到digitsInNumber范围内的j,执行
返回“不可能”
从方法中执行以下操作-
temp_cubes:=预处理(n)
num:=n作为字符串
回答:=solve(num,temp_cubes)
返回ans
示例
让我们看下面的实现以更好地理解-
import math
def preProcess(n):
temp_cubes = list() for i in range(1, math.ceil(n**(1. / 3.))):
cube = i**3
cubeString = str(cube)
temp_cubes.append(cubeString)
return temp_cubes
def solve(num,temp_cubes):
temp_cubes = temp_cubes[::-1]
totalCubes = len(temp_cubes)
for i in range(totalCubes):
temp = temp_cubes[i]
digitsInCube = len(temp)
index = 0
digitsInNumber = len(num)
for j in range(digitsInNumber):
if (num[j] == temp[index]):
index += 1
if (digitsInCube == index):
return temp
return "Not Possible"
def getLargestCube(n):
temp_cubes = preProcess(n)
num = str(n)
ans = solve(num, temp_cubes)
return ans
n = 806
print(getLargestCube(n) )输入值
806
输出结果
8