1006.笨阶乘
解法:队列
经典的从大到小,因此我们只需要用for 循环 ,步长为负即可
之后即为地板除法,说明白就是 //
然后为 加减乘除的替换,可以发现,替换存在的固定的规律。因此,我们可以通过for遍历阶乘的式子,然后将其中的符号替换成规律的加减乘除即可
因此,我们使用队列,将第一个替换后又放于最后方,便于维护替换的规律。
因为我们以字符将原式子替换,所以队列中存在的元素都为字符串,且完整的式子都被分割了。
为了运算,用join将其连接,又利用eval,将字符串式子转为运算式子,int取整,输出。
代码如下:
class Solution:
def clumsy(self, N: int) -> int:
string=''
for i in range(N,0,-1):
string+=str(i)+'*'
string=list(string[:-1])
num=string.count('*')
stack=['*','//','+','-']
for b in range(len(string)):
if not string[b].isdigit():
x=stack.pop(0)
string[b]=x
stack.append(x)
string=''.join(string)
return int(eval(string))