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)

你可能感兴趣的:(python刷题)