zltzlt 发表于 2020-3-3 21:34:10

kinkon 发表于 2020-3-3 21:05
感觉还是第一种方法快一点,少了个循环

解答错误

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

kinkon 发表于 2020-3-3 21:40:32

zltzlt 发表于 2020-3-3 21:34
解答错误

输入:"aabb"


越来越迷糊了,现在对了吗?

whosyourdaddy 发表于 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

wuqramy 发表于 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 = 0
      else:
            dict1 += 1
    for each in dict1.values():
      if each % 2 == 0:
            count += 1
    if count > 1:
      print('False')
    else:
      print('True')
hwstr()

wuqramy 发表于 2020-3-3 22:13:26

wuqramy 发表于 2020-3-3 22:03
好像不止一个用字典的呢

字典,快准狠!

@zltzlt {:10_325:}

寻风 发表于 2020-3-3 23:41:04

#<
def fun342():
    str1 = input()
    k=0
    for i in set(str1):
      k+=str1.count(i)%2
    print(k>2)
#>

Lyton_ 发表于 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)

寻风 发表于 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)

Python3005 发表于 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

NAMELESSONE 发表于 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

iGD_Hz 发表于 2020-3-4 08:58:03

def fun_342(str1):
    flag = 0
    for i in str1:
      if i in dict1:
            dict1 += 1
      else:
            dict1 = 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))

一个账号 发表于 2020-3-4 12:07:24

这种算吗:
输入:"Tactcoa"
输出:True
解释:排列有 "Tacocat"、"atcocTa",等等

zltzlt 发表于 2020-3-4 12:08:39

一个账号 发表于 2020-3-4 12:07
这种算吗:
输入:"Tactcoa"
输出:True


区分大小写

一个账号 发表于 2020-3-4 12:17:23

严重超时{:10_266:}:

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

hhb1988 发表于 2020-3-4 12:18:15

def f342(strinfo):
    temstr = list(strinfo)
    odd_num = 0
    while len(temstr)>0:
      firstnum = temstr
      del temstr
      if firstnum in temstr:
            p=temstr.index(firstnum)
            del temstr
      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('请输入一个字符串:'))
iff342(strinfo):
    print('是回文串。')
else:
    print('不是回文串。')

单个字符也算是回文串吧

zltzlt 发表于 2020-3-4 12:18:40

一个账号 发表于 2020-3-4 12:17
严重超时:

不要使用 itertools

一个账号 发表于 2020-3-4 12:37:44

wuqramy 发表于 2020-3-3 22:13
@zltzlt

题目要求写一个函数

wuqramy 发表于 2020-3-4 12:41:33

一个账号 发表于 2020-3-4 12:37
题目要求写一个函数

已改,谢谢提醒

黎影 发表于 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)
      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/2-1 != 0:
                for b in range(list1/2-1):
                  str2 += str2
      for c in range(len(str2),-1,-1):
            str2 += str2[(c-1):c]
      print('输出:True')
      print('解释:排列有“%s”,等等'%str2)
    else:
      str3 = str2
      str2 = str2[:i]+str2[(i+1):]
      list1.remove(1)
      for a in range(len(list1)):
            if list1/2-1 != 0:
                for b in range(list1/2-1):
                  str2 += str2
      str2 += str3
      for c in range(len(str2)-1,-1,-1):
            str2 += str2[(c-1):c]
      print('输出:True')
      print('解释:排列有“%s”,等等'%str2)

Oir88888 发表于 2020-3-4 19:39:36

萌新在这里{:5_109:}
页: 1 2 3 4 [5] 6 7
查看完整版本: Python:每日一题 342