鱼C论坛

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

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

[复制链接]
 楼主| 发表于 2020-3-3 21:34:10 | 显示全部楼层
kinkon 发表于 2020-3-3 21:05
感觉还是第一种方法快一点,少了个循环

解答错误

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

使用道具 举报

发表于 2020-3-3 21:40:32 | 显示全部楼层
zltzlt 发表于 2020-3-3 21:34
解答错误

输入:"aabb"

越来越迷糊了,现在对了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-3 21:50:53 | 显示全部楼层
def func342(n):
    count = 0
    flag = 0
    list1 = list(n)
    list2 = sorted(set(list1),key=list1.index)
    for i in list2:
        if list1.count(i) == 2:
            continue
        elif list1.count(i)>2:
            flag = 1
            break
        elif list1.count(i) == 1:
            count += 1
            if count == 2:
                break
    if count == 2 or flag == 1:
        return False
    return True

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-3 22:03:40 | 显示全部楼层
本帖最后由 wuqramy 于 2020-3-4 12:41 编辑

好像不止一个用字典的呢
def hwstr():
    n = input('n = ')
    count = 0
    dict1 = {}
    for each in n:
        if each not in dict1.keys():
            dict1[each] = 0
        else:
            dict1[each] += 1
    for each in dict1.values():
        if each % 2 == 0:
            count += 1
    if count > 1:
        print('False')
    else:
        print('True')
hwstr()

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-3 22:13:26 | 显示全部楼层
wuqramy 发表于 2020-3-3 22:03
好像不止一个用字典的呢

字典,快准狠!

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

使用道具 举报

发表于 2020-3-3 23:41:04 From FishC Mobile | 显示全部楼层
#<
def fun342():
    str1 = input()
    k=0
    for i in set(str1):
        k+=str1.count(i)%2
    print(k>2)
#>

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-3 23:41:27 | 显示全部楼层
本帖最后由 Lyton_ 于 2020-3-4 00:07 编辑
def fun342(str1):
    count=0
    for each in str1:
        count+=str1.count(each)%2       
    if count>1:
        print('False')
    else:
        print('True')


str1=input('请输入需要判断的字符串:')
fun342(str1)

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-3 23:45:28 | 显示全部楼层
def fun342():
    str1 = input()
    k=0
    for i in set(str1):
        k+=str1.count(i)%2
    print(k>2)

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-4 02:33:08 | 显示全部楼层
本帖最后由 Python3005 于 2020-3-4 02:34 编辑
import collections
def fun(s):
        lst = collections.Counter(s).values()
        lst = list(filter(lambda x : x % 2, lst))
        return len(lst) < 2

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-4 08:28:54 | 显示全部楼层
def five(ing:str):
    if len(ing)==1:
        return True
    ing=list(ing)
    if len(ing)==2*len(set(ing)) or (len(ing)%2!=0 and len(ing)==2*int(len(set(ing)))-1): 
        return True
    return False

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-4 08:58:03 | 显示全部楼层
def fun_342(str1):
    flag = 0
    for i in str1:
        if i in dict1:
            dict1[i] += 1
        else:
            dict1[i] = 1
    for i in dict1.values():
        if i % 2:
            flag += 1
    if flag<2:
        return True
    else:
        return False
dict1 ={}
str1 = input()
print(fun_342(str1))

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-4 12:07:24 | 显示全部楼层
这种算吗:
输入:"Tactcoa"
输出:True
解释:排列有 "Tacocat"、"atcocTa",等等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 12:08:39 | 显示全部楼层
一个账号 发表于 2020-3-4 12:07
这种算吗:
输入:"Tactcoa"
输出:True

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

使用道具 举报

发表于 2020-3-4 12:17:23 | 显示全部楼层
严重超时
from itertools import permutations as p
def func(str1):
    list1 = []
    for letter in str1:
        list1.append(letter)
    for lst in p(list1):
        if lst[::-1] == lst:
            return True
    return False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 12:18:15 | 显示全部楼层
def f342(strinfo):
    temstr = list(strinfo)
    odd_num = 0
    while len(temstr)>0:
        firstnum = temstr[0]
        del temstr[0]
        if firstnum in temstr:
            p=temstr.index(firstnum)
            del temstr[p]
        else:
            odd_num +=1
        if odd_num > 1:
            return False
    if odd_num==0:
        return True
    elif len(strinfo)%2 == 1:
        return True
    else:
        return False
    
strinfo = list(input('请输入一个字符串:'))
if  f342(strinfo):
    print('是回文串。')
else:
    print('不是回文串。')

单个字符也算是回文串吧

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-3-4 12:18:40 | 显示全部楼层

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

使用道具 举报

发表于 2020-3-4 12:37:44 | 显示全部楼层

题目要求写一个函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 12:41:33 | 显示全部楼层
一个账号 发表于 2020-3-4 12:37
题目要求写一个函数

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

使用道具 举报

发表于 2020-3-4 19:25:34 | 显示全部楼层
str1 = input('输入:')
str2 = ''
str3 = ''
list1 = []
for a in str1:
    if not(a in str2):
        str2 += a
        
number1 = 0
for i in range(len(str2)):
    if number1 >= 2:
        break
    else:
        a = str1.count(str2[i])
        list1.append(a)
        if (a%2) != 0:
            number2 = i
            number1 += 1
            
if number1 >= 2:
    print('输出:False')
else:
    if (len(str1)%2) == 0:
        for a in range(len(list1)):
            if list1[a]/2-1 != 0:
                for b in range(list1[a]/2-1):
                    str2 += str2[a]
        for c in range(len(str2),-1,-1):
            str2 += str2[(c-1):c]
        print('输出:True')
        print('解释:排列有“%s”,等等'%str2)
    else:
        str3 = str2[i:(i+1)]
        str2 = str2[:i]+str2[(i+1):]
        list1.remove(1)
        for a in range(len(list1)):
            if list1[a]/2-1 != 0:
                for b in range(list1[a]/2-1):
                    str2 += str2[a]
        str2 += str3
        for c in range(len(str2)-1,-1,-1):
            str2 += str2[(c-1):c]
        print('输出:True')
        print('解释:排列有“%s”,等等'%str2)

评分

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

查看全部评分

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-28 08:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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