zltzlt 发表于 2020-3-3 19:42:17

Python:每日一题 342

本帖最后由 zltzlt 于 2020-3-3 20:21 编辑

今天的题目:

给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。

说明:字符串不仅只包含小写字母。

示例 1:

输入:"tactcoa"
输出:True
解释:排列有 "tacocat"、"atcocta",等等
示例 2:

输入:"abcda"
输出:False

{:10_298:}欢迎大家一起答题!{:10_298:}

wuqramy 发表于 2020-3-3 19:43:41

{:5_94:}

zltzlt 发表于 2020-3-3 19:44:11

wuqramy 发表于 2020-3-3 19:43


不明白?

wuqramy 发表于 2020-3-3 19:45:30

zltzlt 发表于 2020-3-3 19:44
不明白?

是的

蒋博文 发表于 2020-3-3 19:45:46

zltzlt 发表于 2020-3-3 19:44
不明白?

我也有点不明白。。。

zltzlt 发表于 2020-3-3 19:46:29

蒋博文 发表于 2020-3-3 19:45
我也有点不明白。。。

@wuqramy 意思是利用字符串中的所有字符能不能组成一个回文的字符串

蒋博文 发表于 2020-3-3 19:47:39

zltzlt 发表于 2020-3-3 19:46
@wuqramy 意思是利用字符串中的所有字符能不能组成一个回文的字符串

哦,明白了

fwxxx 发表于 2020-3-3 19:48:04

if(s = s[::-1]):
return True

fwxxx 发表于 2020-3-3 19:51:20

第一个怎么就是True了

zltzlt 发表于 2020-3-3 19:51:35

fwxxx 发表于 2020-3-3 19:51
第一个怎么就是True了

你没理解到题目,题目意思是利用字符串中的所有字符能不能组成一个回文的字符串

qiuyouzhi 发表于 2020-3-3 19:52:29

fwxxx 发表于 2020-3-3 19:51
第一个怎么就是True了

没有那么简单
是第一个字符串所有的字符能不能组成一个回文联

wuqramy 发表于 2020-3-3 19:57:37

zltzlt 发表于 2020-3-3 19:46
@wuqramy 意思是利用字符串中的所有字符能不能组成一个回文的字符串

{:10_323:}

yexing 发表于 2020-3-3 19:58:28

暂时只想到了这种笨方法,传入大数据可能会超时{:10_250:}
from itertools import permutations

def func342(s):
    for p in permutations(s):
      temp = str(''.join(str(x) for x in p))
      if temp == temp[::-1]:
            return True
    return False

ricia 发表于 2020-3-3 19:58:33

import itertools
list_all = []
list_string = []
for p in itertools.permutations("tactcoa"):
    list_all.append(''.join(str(x) for x in p))
for string in list_all:
    if string == string[::-1]:
      list_string.append(string)
print(set(list_string))

zltzlt 发表于 2020-3-3 19:59:18

yexing 发表于 2020-3-3 19:58
暂时只想到了这种笨方法,传入大数据可能会超时

输入 "aabbhijkkjih" 就超时

zltzlt 发表于 2020-3-3 19:59:31

ricia 发表于 2020-3-3 19:58


不要用常规的方法

yexing 发表于 2020-3-3 20:01:09

zltzlt 发表于 2020-3-3 19:59
输入 "aabbhijkkjih" 就超时

我尽力了,等待鱼油们更好的实现吧{:10_266:}

fwxxx 发表于 2020-3-3 20:07:07

本帖最后由 fwxxx 于 2020-3-3 20:12 编辑


def fun(s):
    flag = 0
    l = len(s)
    if(l%2==0):
      for i in s:
            if s.count(i) == 2:
                continue
            else:
                return False
      return True
    if(l%2==1):
      for i in s:
            if s.count(i) == 2:
                continue
            elif s.count(i)==1:
                flag+=1
    if flag !=1:
      return False
    returnTrue

if __name__ == '__main__':
    s = input()
    if(fun(s)):
      print("True")
    else:
      print("false")

fan1993423 发表于 2020-3-3 20:08:26

存不存在空字符的情况,如果为空是True还是False

zltzlt 发表于 2020-3-3 20:09:25

fan1993423 发表于 2020-3-3 20:08
存不存在空字符的情况,如果为空是True还是False

不存在
页: [1] 2 3 4 5 6 7
查看完整版本: Python:每日一题 342