鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

[已解决]Python:每日一题 342

[复制链接]
发表于 2020-3-3 20:21:31 | 显示全部楼层
zltzlt 发表于 2020-3-3 20:10
解答错误

输入:"aa"

改好了

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 20:22:14 | 显示全部楼层


解答错误

输入:"aaa"
输出:False
预期结果:True

发代码的正确姿势:https://fishc.com.cn/forum.php?m ... peid%26typeid%3D441
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 20:25:34 | 显示全部楼层
本帖最后由 fan1993423 于 2020-3-3 20:28 编辑
  1. from collections import Counter
  2. def fun342(s):
  3.     if len(s)==1:return True
  4.     d=list(map(lambda x:x%2,list((Counter(s).values()))))
  5.     if d.count(1)==0 or d.count(1)==1:
  6.         return True
  7.     else:return False
复制代码

行吧,我一直以为一个字符串没有回文
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 20:26:03 | 显示全部楼层
fan1993423 发表于 2020-3-3 20:25
行吧,我一直以为一个字符串没有回文

32 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 20:30:04 | 显示全部楼层
  1. def f(n):
  2.     if len(n)%2==0:
  3.         flag = 1
  4.         d={}
  5.         for i in n:
  6.             d[i] = d.get(i,0)+1
  7.         for j in d.values():
  8.             if j%2==0:
  9.                 continue
  10.             else:
  11.                 flag = 0
  12.         if flag:
  13.             return 1
  14.         else:
  15.             return 0
  16.     else:
  17.         flag = 0
  18.         d={}
  19.         for j in n:
  20.             d[j] = d.get(j,0)+1
  21.         for i in d.values():
  22.             if i/2==0:
  23.                 flag=0
  24.                 continue
  25.             if i%2==1:
  26.                 flag+=1
  27.         if flag<=1:
  28.             return 1
  29.         else:
  30.             return 0
  31.                
  32.             
  33.         
  34. a = input()

  35. if f(a):
  36.     print("True")
  37. else:
  38.     print("False")
  39. 最后一次
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
zltzlt + 4 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 20:30:45 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 20:33:02 | 显示全部楼层
string = input('请输入字符:')

list1 = []

n=0

while string != '':
    list1.append(string.count(string[0]))
    string = string.strip(string[0])

for each in list1:
    if each%2 != 0:
        n +=1

if n>1:
    print('False')
else:
    print('True')

总体思路是:计算出输入字符串里每一个字符出现的次数,要达成要求,最多只能有一种字符出现的数量为奇数,剩下的都得为偶数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 20:33:28 | 显示全部楼层
  1. def f342(s):
  2.     s = list(s)
  3.     s.sort()
  4.     n = 0
  5.     i = 0
  6.     while i < len(s):
  7.         if i == len(s) - 1:
  8.             if n == 1:
  9.                 return 'False'
  10.             else:
  11.                 return 'True'
  12.         if s[i] != s[i+1]:
  13.             n += 1
  14.             i += 1
  15.         else:
  16.             i += 2
  17.         if n > 1:
  18.             return 'False'
  19.     return 'True'
  20. print(f342('asdfdsas'))
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
zltzlt + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 20:34:20 | 显示全部楼层
风魔孤行者 发表于 2020-3-3 20:33
string = input('请输入字符:')

list1 = []

1. 请写成一个函数
2. 发代码的正确方法:https://fishc.com.cn/forum.php?m ... peid%26typeid%3D441
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 20:34:47 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 20:37:57 | 显示全部楼层
  1. def fun342(s:str):
  2.     if(s == ""):
  3.         return False
  4.     length = len(s)
  5.     if(length == 1):
  6.         return True
  7.     dic = dict()
  8.     for index in range(length):
  9.         if(s[index] not in dic):
  10.             dic[s[index]] = 1
  11.         else:
  12.             dic[s[index]] += 1
  13.     top = 0
  14.     for value in dic.values():
  15.         if(value % 2 == 1):
  16.             top += 1
  17.             if(top > 1):
  18.                 return False
  19.         else:
  20.             pass
  21.     if(top <= 1):
  22.         return True
  23.     else:
  24.         return False
复制代码


行吧

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 20:39:40 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 20:40:27 | 显示全部楼层
  1. def test(char):
  2.     def even(char):
  3.         for each in char:
  4.             if char.count(each) % 2 != 0:
  5.                 return False
  6.         else:
  7.             return True

  8.     if len(char) % 2 == 0:
  9.         return even(char)
  10.     else:
  11.         for each in char:
  12.             if char.count(each) % 2 != 0:
  13.                 return even(char.replace(each, '' , 1))
  14.         return False
复制代码

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 20:41:54 | 显示全部楼层
zltzlt 发表于 2020-3-3 20:34
1. 请写成一个函数
2. 发代码的正确方法:https://fishc.com.cn/forum.php?mod=viewthread&tid=52272&ex ...
  1. string = input('请输入字符:')

  2. def judge(string):
  3.     list1 = []
  4.     n=0

  5.     while string != '':
  6.         list1.append(string.count(string[0]))
  7.         string = string.strip(string[0])

  8.     for each in list1:
  9.         if each%2 != 0:
  10.             n += 1

  11.     if n>1:
  12.         return False
  13.     else:
  14.         return True

  15. print(judge(string))
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 20:42:29 | 显示全部楼层
  1. def fun(s):
  2.     e = []
  3.     flag = 0
  4.     l = len(s)
  5.     if(l%2==0):
  6.         for i in s:
  7.             if s.count(i)%2 ==0:
  8.                 continue
  9.             else:
  10.                 return False
  11.         return True
  12.     if(l%2==1):
  13.         for i in s:
  14.             if s.count(i)%2==0:
  15.                 flag+=1
  16.             else:
  17.                 e.append(i)
  18.     if(len(set(e))!=1):
  19.         return False
  20.     return  True

  21. if __name__ == '__main__':
  22.     s = input()
  23.     if(fun(s)):
  24.         print("True")
  25.     else:
  26.         print("false")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 20:42:49 | 显示全部楼层

解答错误

输入:"ivicc"
输出:False
预期结果:True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 20:44:02 | 显示全部楼层
马上就来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 20:44:33 | 显示全部楼层
  1. import collections
  2. def fun342(s:str):
  3.     if(s == ""):
  4.         return False
  5.     length = len(s)
  6.     if(length == 1):
  7.         return True
  8.     dic = dict(collections.Counter(s))
  9.     top = 0
  10.     for value in dic.values():
  11.         if(value % 2 == 1):
  12.             top += 1
  13.             if(top > 1):
  14.                 return False
  15.         else:
  16.             pass
  17.     return True
复制代码


换了工具存字典,不知道效率会不会更快一点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 20:45:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 20:46:13 | 显示全部楼层
546623863 发表于 2020-3-3 20:44
换了工具存字典,不知道效率会不会更快一点

36 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 17:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表