python 上机考试刷题记录

实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,都删除,删除保持原字符串排序不变

input_list=list(input())
out_list=''
count=input_list.count(input_list[0])
for i in input_list:
    if input_list.count(i)<count:
        count=input_list.count(i)
for j in range(len(input_list)):
    if input_list.count(input_list[j])>count:
        out_list=out_list+input_list[j]
print(out_list)

请求出第N个丑数。(最小因子只有2、3、5的数,称作丑数(Ugly Number)。
例如6、8都是丑数,但14不是,因为它包含因子7,习惯上我们把1当做是第一个丑数);

暴力求法,oj可以试试。面试这么写凉凉

def GetUglyNumber_Solution(index):
    res=[]
    for i in range(31):
        for j in range(20):
            for k in range(18):
                res.append((2**i)*(3**j)*(5**k))
    res.sort()
    if index>=1:
        return (res[index-1])
    else:
        return 0

动态规划法:

#动态规划法,最小丑数分别乘以2、3、5,取最小的
def GetUglyNumber_Solution(index):
    res=[1]
    p2=p3=p5=0
    while len(res)<index:
        while res[p2]*2<=res[-1]: 
            p2+=1
        while res[p3]*3<=res[-1]: 
            p3+=1
        while res[p5]*5<=res[-1]:
            p5+=1
        res.append(min(res[p2]*2,res[p3]*3,res[p5]*5))
    if index>=1:
        return (res[index-1])
    else:
        return 0    
GetUglyNumber_Solution(0)
GetUglyNumber_Solution(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值