ouyunfu 发表于 2020-1-31 23:50:52

str = input("请输入要统计的单词:")
def D(i):
    global count
    if i not in L1:
      L1.append(i)
    elif i-1!=0 and i-1 not in L1:
      L1.append(i-1)
      count=count+1
    elif i-1==0:
      count=count+1
    else:
      count=count+1
      return D(i-1)
    return L1, count

res = {}
for i in str:
    if i in res:
      res = res + 1
    else:
      res = 1
L=list(res.values())
L1=[]
count=0
for i in L:
    if i not in L1:
      L1.append(i)
    elif i-1!=0 and i-1 not in L1:
      L1.append(i-1)
      count+=1
    elif i-1==0:
      count+=1
    else:
      count+=1
      D(i-1)
print(count)

ouyunfu 发表于 2020-2-1 00:28:31

str = input("请输入要统计的单词:")
def D(i):
    global count
    if i not in L1:
      L1.append(i)
    elif i-1!=0 and i-1 not in L1:
      L1.append(i-1)
      count=count+1
    elif i-1==0:
      count=count+1
    else:
      count=count+1
      return D(i-1)
    return L1, count

res = {}
for i in str:
    if i in res:
      res = res + 1
    else:
      res = 1
L=list(res.values())
L1=[]
count=0
for i in L:
    if i not in L1:
      L1.append(i)
    elif i-1!=0 and i-1 not in L1:
      L1.append(i-1)
      count+=1
    elif i-1==0:
      count+=1
    else:
      count+=1
      D(i-1)
print(count)

阴阳神万物主 发表于 2020-2-1 08:54:14

hrp 发表于 2020-1-31 21:21
思路一样

这就是缘分呐。卍

kinkon 发表于 2020-2-1 11:52:12

本帖最后由 kinkon 于 2020-2-1 12:51 编辑

def f320(n):
    d={}
    for i in n:
      d=n.count(i)
    l=sorted(list(d.values()),reverse=True)
    if len(l)<=1:return 0
    k=0
    for j in range(len(l)-1):
      while l>=l:
            l-=1
            k+=1
            if l==0:break
    print(l)
    return k

William4869 发表于 2020-2-1 14:09:18

def f320(s):
    A=[]
    a=set(s)
    b=set()
    for each in a:
      A.append(s.count(each))
    A.append(0)
    A.sort(reverse=True)
    sum=0
    for i in range(0,26):
      if A==0:
            while i<26:
                sum+=A
                i+=1
            break
      elif A>=A:
            sum=sum+A-A+1
            A=A-1
    return sum

print(f320("qwertyuiopasdfghjklzxcvbnm"*100))

zltzlt 发表于 2020-2-1 15:54:08

wanting-for 发表于 2020-1-31 18:15
菜鸟与大佬的差距就是,大佬啥都考虑的清清楚楚。而我就漏这漏那,不严谨....

1012 ms,效率偏低

zltzlt 发表于 2020-2-1 15:55:06

fan1993423 发表于 2020-1-31 18:39


820 ms

zltzlt 发表于 2020-2-1 15:56:06

阴阳神万物主 发表于 2020-1-31 18:41
娱乐向解题,嗯,好像是。(AWA)

560 ms

zltzlt 发表于 2020-2-1 15:57:11

SHRS23 发表于 2020-1-31 19:13
请版主帮忙测试

输入大数据出错(由于字符串太长,这里我就不展示了)

IndexError: list index out of range

zltzlt 发表于 2020-2-1 15:57:55

TJBEST 发表于 2020-1-31 21:16
非常朴素的做法

569 ms

zltzlt 发表于 2020-2-1 16:00:15

hrp 发表于 2020-1-31 21:21
思路一样

解答错误

输入:"abcd"
输出:6
预期结果:3

zltzlt 发表于 2020-2-1 16:00:47

546623863 发表于 2020-1-31 23:00
感觉我每次写的思路都比较奇葩。。。。

849 ms,不错

zltzlt 发表于 2020-2-1 16:04:40

ouyunfu 发表于 2020-1-31 23:50
str = input("请输入要统计的单词:")
def D(i):
    global count


1011 ms,效率偏低

zltzlt 发表于 2020-2-1 16:05:53

kinkon 发表于 2020-2-1 11:52


2595 ms,效率不高啊

zltzlt 发表于 2020-2-1 16:06:33

William4869 发表于 2020-2-1 14:09
def f320(s):
    A=[]
    a=set(s)


输入 'aaabbb' 出错,你自己测试下。

William4869 发表于 2020-2-1 16:18:06

本帖最后由 zltzlt 于 2020-2-1 16:19 编辑

zltzlt 发表于 2020-2-1 16:06
输入 'aaabbb' 出错,你自己测试下。

def f320(s):
    A=[]
    a=set(s)
    b=set()
    num=1
    for each in a:
      A.append(s.count(each))
      num+=1
    A.append(0)
    A.sort(reverse=True)
    sum=0
    for i in range(num+1):
      if A==0:
            while i<num:
                sum+=A
                i+=1
            break
      elif A>=A:
            sum=sum+A-A+1
            A=A-1
    return sum

疏忽了,,这样呢

zltzlt 发表于 2020-2-1 16:19:38

William4869 发表于 2020-2-1 16:18
疏忽了,,这样呢

这样可以了,但是用时较长。

hrp 发表于 2020-2-1 16:47:20

zltzlt 发表于 2020-2-1 16:00
解答错误

输入:"abcd"


def func320(s):
    templist =
    templist.sort(reverse=True)
    result, length = 0, len(templist)
    for ind in range(length):
      if len(set(templist)) != len(templist):
            if templist:
                num = templist.count(templist)
                for i in range(ind + 1, ind + num):
                  templist -= 1
                  result += 1
      else:
            break
    return result

zltzlt 发表于 2020-2-1 16:48:48

hrp 发表于 2020-2-1 16:47


980 ms

坑得飞起 发表于 2020-2-1 22:54:15

本帖最后由 坑得飞起 于 2020-2-1 23:17 编辑

st=input()
list0, list1, list2, ans = [], [], [], 0
for i in st:
    list0+=i
list1 = list(set(list0))
for i in list1:
    list2+=
list2.sort(reverse=True)
for i in range(1,len(list2)):
    if list2==0 :
      ans+=list2
      list2=0
    elif (list2>=list2)and(list2!=0):
      ans+=list2-(list2-1)
      list2=list2-1
print(ans)
页: 1 [2] 3
查看完整版本: Python:每日一题 320