鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: zltzlt

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

[复制链接]
 楼主| 发表于 2020-3-27 17:49:10 | 显示全部楼层
黎影 发表于 2020-3-23 13:08
def huiwen(list1):
    list2 = []
    for i in range(len(list1)):

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

使用道具 举报

 楼主| 发表于 2020-3-27 17:49:50 | 显示全部楼层
旅途Z 发表于 2020-3-23 13:08
def is_palindromic(str1, str2):
    determine = str1 + str2
    if determine == determine[::-1]: ...

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

使用道具 举报

 楼主| 发表于 2020-3-27 17:50:20 | 显示全部楼层
mdphd 发表于 2020-3-23 13:10
先发一个暴力法,再看看能不能优化

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

使用道具 举报

 楼主| 发表于 2020-3-27 17:51:13 | 显示全部楼层
whosyourdaddy 发表于 2020-3-23 21:06
def func357(m):
    result = []
    n = len(m)

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

使用道具 举报

 楼主| 发表于 2020-3-27 17:52:46 | 显示全部楼层
阴阳神万物主 发表于 2020-3-24 02:58
难度评级:简单
要素分析:枚举 字符串
感受:由于输入数据无规律,双 for 是一种必然(不然就是递归), ...

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

使用道具 举报

 楼主| 发表于 2020-3-27 17:54:14 | 显示全部楼层

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

使用道具 举报

发表于 2020-3-27 18:46:22 | 显示全部楼层
已改
def fun357(lst):
    if not len(lst):return 0
    result=[]
    for i in range(len(lst)):
        for j in range(len(lst)):
            if i!=j and (lst[j][::-1].startswith(lst[i]) or not lst[j]):
                result.append([i,j])
    return result
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-27 18:49:35 | 显示全部楼层

解答错误

输入:
['a', 'abc', 'aba', '']
输出:
[[0, 2], [0, 3], [1, 3], [2, 3], [3, 0], [3, 1], [3, 2]]
预期结果:
[[0, 3], [3, 0], [2, 3], [3, 2]]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 19:21:16 | 显示全部楼层
换了种思路
def fun357(lst):
    if not len(lst):return 0
    result=[]
    for i in range(len(lst)):
        for j in range(i+1,len(lst)):
            a=lst[i]+lst[j]
            b=lst[j]+lst[i]
            if not len(a)//2 or a[:len(a)//2]==a[-1:int(-len(a)/2)-1:-1]:
                result.append([i,j])
            if not len(b)//2 or b[:len(b)//2]==b[-1:int(-len(b)/2)-1:-1]:
                result.append([j,i])
    return result
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 21:17:01 | 显示全部楼层
本帖最后由 入土 于 2020-3-27 21:18 编辑

顺序不对不知道行不行

def x(word):
    list = []
    list1 = []
    list2 = []
    len_word = len(word)
    for i in range(len_word):
        for d in range(len_word):
            if i != d:
                new_word = word[i]+word[d]
                list.append(new_word)
    
    for each in list:
        leng = len(each)
        n = 0 
        while n < leng / 2:
            if each[n] != each[leng-1-n]:
                break
            else:
                n += 1
        if n >= leng/2:
            print(each)
            list1.append(each)
    
    for i in range(len_word):
        for d in range(len_word):
            if i != d:
                new_word = word[i]+word[d]
                if new_word in list1:
                    p = [i,d]
                    list2.append(p)
    print(list2)
    


m = ["abcd", "dcba", "lls", "s", "sssll"]
x(m)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-28 13:22:06 | 显示全部楼层

输入大数据超时
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-29 12:05:56 | 显示全部楼层
def huiwen(word):
    a=word
    b=[]
    for i in a:
        b.append(i)
    c=b.copy()
    b.reverse()
    if b==c:
        return True

def findindex(word):
    a=''
    b=word
    l=len(b)
    c=[]
    d=[]
    for i in range(l):
        for j in range(l):
            a=''
            a=b[i]+b[j]
            if huiwen(a) and i!=j:
                c.append([i,j])
                d.append(a)
    print(c)
    print(d)
word=["abcd", "dcba", "lls", "s", "sssll"]
findindex(word)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-29 15:07:55 | 显示全部楼层

我会继续努力的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 17:35:11 | 显示全部楼层
本帖最后由 十月故里 于 2020-4-1 17:42 编辑
[code]def huiwen(i,j):
    a=list(''.join([i,j]))
    b=a[:]
    a.reverse()
    if a==b:
        return [i,j]

def main(list1):
    result=[]
    result2=[]
    for i in list1:
        for j in list1:
            if i!=j:
                res=huiwen(i,j)
                if res:
                    result.append((list1.index(res[0]),list1.index(res[1])))
                    result2.append(''.join(res))
    return result,result2

if __name__=='__main__':
    list1=["abcd","dcba","lls","s","sssll"]
    a=main(list1)
    print('可以拼出回文串的是',a[0])
    print('拼成的回文串有',a[1])
[/code]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 19:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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