鱼C论坛

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

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

[复制链接]
发表于 2020-3-27 18:46:36 | 显示全部楼层
更正
  1. def f360(a:str,b:str)->bool:
  2.     m,n = len(a),len(b)
  3.     L=[i for i in range(m) if a[i]!=b[i]]
  4.     if m!=n:
  5.         return False
  6.     elif a==b:
  7.         if list(a)==list(reversed(a)):
  8.             return True
  9.         else: return False
  10.     elif a[:L[0]]+a[L[1]]+a[L[0]+1:L[1]]+a[L[0]]+a[L[1]+1:]==b:
  11.         return True
  12.     else: return False
  13.    
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

解答错误

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

使用道具 举报

发表于 2020-3-27 18:51:27 | 显示全部楼层
zltzlt 发表于 2020-3-27 18:47
解答错误

输入:a = "", b = ""

谢谢提示,已改
  1. def f360(a:str,b:str)->bool:
  2.     m,n = len(a),len(b)
  3.     L=[i for i in range(m) if a[i]!=b[i]]
  4.     if m!=n:
  5.         return False
  6.     elif a==b:
  7.         if a=='':
  8.             return True
  9.         elif list(a)==list(reversed(a)):
  10.             return True
  11.         else: return False
  12.     elif a[:L[0]]+a[L[1]]+a[L[0]+1:L[1]]+a[L[0]]+a[L[1]+1:]==b:
  13.         return True
  14.     else: return False
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-27 18:54:33 | 显示全部楼层
本帖最后由 March2615 于 2020-3-27 19:09 编辑
zltzlt 发表于 2020-3-27 18:28
解答错误

输入:a = "aa", b = "aa"

  1. def daily360(a: str, b: str) -> bool:
  2.     # 如果两个字符串不同
  3.     # 1. 长度不同 -> 不可互换
  4.     # 2. 不同的地方大于2 -> 不可互换
  5.     # 3. 不同的地方字母不同 -> 不可互换
  6.     # 如果两个字符串相同
  7.     # 1. 字符串内有相同字符 -> 可以互换
  8.     # 2. 字符串内无相同字符 -> 不可互换
  9.     # 3. 字符串长度小于2 -> 不可互换
  10.     if a != b:
  11.         if len(a) != len(b): # 长度不同
  12.             return False
  13.         temp = []
  14.         for i in range(len(a)):
  15.             if a[i] != b[i]:
  16.                 temp.append(a[i])
  17.                 temp.append(b[i])
  18.         # !=4->不同的地方大于2
  19.         # 不是对称的说明不同的地方字母不同
  20.         if len(temp) != 4 or list(reversed(temp)) != temp:
  21.             return False
  22.         else:
  23.             return True
  24.     else:
  25.         if len(a) < 2:
  26.             return False
  27.         temp = {}
  28.         for each in a:
  29.             if each in temp:
  30.                 return True
  31.             temp[each] = 1
  32.         return False
复制代码


抱歉注释有点多,怕没考虑到某些情况

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-27 19:38:02 | 显示全部楼层
  1. def f360(a,b):
  2.     if len(a)!=len(b):
  3.         return False
  4.     t=0
  5.     l=[]
  6.     for i in range(len(a)):
  7.         if a[i]!=b[i]:
  8.             t+=1
  9.             if t>2:
  10.                 return False
  11.             l.append([a[i],b[i]])
  12.     if not t:
  13.         return True
  14.     elif t==2:
  15.         return l[0]==l[-1][::-1]
  16.     else:
  17.         return False
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-27 20:43:22 | 显示全部楼层
本帖最后由 TJBEST 于 2020-3-27 21:19 编辑

来个没效率的
  1. def fun360(a,b):
  2.     if len(a) != len(b):
  3.         return False
  4.     M = len(a)
  5.     index_arr = [each for each in range(0,M) if a[each]!=b[each]]
  6.     if len(index_arr) == 2:
  7.         if a[index_arr[0]] == b[index_arr[1]] and a[index_arr[1]] == b[index_arr[0]]:
  8.             return True
  9.         else:
  10.             return False
  11.     elif len(index_arr) == 0:
  12.         for index in range(0,M-1):
  13.             if a[index] == a[index+1]:
  14.                 return True
  15.         return False
  16.     else:
  17.         return False
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-27 21:16:53 | 显示全部楼层    本楼为最佳答案   
def func360(a,b):
    if len(a) != len(b):
        return False
    count = 0
    temp = []
    for i in range(len(a)):
        if a[i] != b[i]:
            print("different")
            count +=1
            if count > 2:
                return False
            temp.append(a[i])
            temp.append(b[i])
    if count ==1:
        return False
    elif count ==0:
        tempa = "".join(set(a))
        if len(tempa) != len(a):
            return True
        return False
    elif count == 2:
        if temp[:2] == temp[:1:-1]:
            return True
        return False

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-27 21:23:12 | 显示全部楼层
本帖最后由 BngThea 于 2020-3-30 19:14 编辑
  1. def cmp(str1,str2):
  2.     if len(str1) != len(str2):
  3.         return False
  4.     elif set(str1) != set(str2):
  5.         return False
  6.     else:
  7.         tmp=[(x,y) for x,y in zip(str1,str2) if x != y]
  8.         if not tmp:
  9.             if len(set(str1)) == len(str1):
  10.                 return False
  11.             else:
  12.                 return True
  13.         return len(tmp[0]) == 2 and tmp[0][::-1] == tmp[1]
  14.     pass
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-27 21:41:36 | 显示全部楼层
c = "abcd"
d = "abcd"
def fun360(a,b):
    a = list(a)
    b = list(b)
    list1 = []
    list2 = []
    n = len(a)
    m = len(d)
    result = False
    if n != m:
        result = False
    elif a == b:
        for i in range(n):
            if a.count(a[i]) >= 2:
                result = True
    else:
       for i in range(n):
            if a[i] != b[i]:
                list1.append((a[i]))
                list2.append(b[i])

            if len(list1) != len(list2) or len(list1) != 2 :
                result = False
            else:
                if list1[0] == list2[1] and list1[1] == list2[0]:
                    result =True
    return result

print(fun360(c, d))

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-28 11:08:26 | 显示全部楼层
def switch_equal(str1, str2):
    length = len(str1)
    diff_list = []
    if length != len(str2):
        return False
    for index in range(length):
        if str1[index] != str2[index]:
            diff_list.append(index)
    if len(diff_list) == 0:
        return str1 == "" or len(str1) != len(set(str1))
    elif len(diff_list) == 2:
        return str1[diff_list[0]] == str2[diff_list[1]] and str1[diff_list[1]] == str2[diff_list[0]]
    else:
        return False

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-28 13:22:14 | 显示全部楼层
本帖最后由 flamezyy 于 2020-3-28 13:31 编辑
  1. def f360(a,b):
  2.     base = []
  3.     comp = []
  4.     times = 0
  5.     if (len(a) != len(b)) or (len(a) == 0):
  6.         return False
  7.     if a == b:
  8.         return True
  9.     for i in range(len(a)):
  10.         if a[i] != b[i]:
  11.             base.append(a[i])
  12.             comp.append(b[i])
  13.             times += 1
  14.         if times > 2:
  15.             return False
  16.     comp.reverse()
  17.     if base == comp:
  18.         return True
  19.     else:
  20.         return False
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-28 20:24:08 | 显示全部楼层
  1. def f360(a,b):
  2.     if len(a) != len(b):
  3.         return False
  4.     else:
  5.         d = []
  6.         for i in range(len(a)):
  7.             if a[i] != b[i]:
  8.                 d.append(i)
  9.         c = len(d)
  10.         if c == 0:
  11.             if len(a) == len(set(a)):
  12.                 return False
  13.             else:
  14.                 return True
  15.         elif c == 2 and a[d[0]] == b[d[1]] and a[d[1]] == b[d[0]]:
  16.             return True
  17.         else:
  18.             return False
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-28 20:48:28 | 显示全部楼层
本帖最后由 l0stparadise 于 2020-3-28 21:20 编辑
  1. def f360(a,b):
  2.     if len(a) != len(b):
  3.         return False
  4.     if len(a) < 2 or len(b) < 2:
  5.         return False
  6.     list_a_dif = []
  7.     list_b_dif = []
  8.     list_a_same = []
  9.     list_b_same = []
  10.     for i in range(len(a)):
  11.         if a[i] != b[i]:
  12.             list_a_dif.append(a[i])
  13.             list_b_dif.append(b[i])
  14.         else:
  15.             list_a_same.append(a[i])
  16.             list_b_same.append(b[i])
  17.     if len(list_a_dif) != len(list_b_dif):
  18.         return False
  19.     if len(list_a_dif) == len(list_b_dif) == 0:
  20.         if len(set(list_a_same)) < len(list_a_same):
  21.             return True
  22.         else:
  23.             return False
  24.     if len(list_a_dif) == len(list_b_dif) == 2:
  25.         if list_a_dif == list_b_dif[::-1]:
  26.             return True
  27.         else:
  28.             return False
  29.     else:
  30.         return False
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-28 21:51:29 | 显示全部楼层
先占楼。楼主,你先别揭帖。我还想答题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-29 08:06:38 | 显示全部楼层
蒋博文 发表于 2020-3-28 21:51
先占楼。楼主,你先别揭帖。我还想答题

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

使用道具 举报

发表于 2020-3-29 09:59:04 | 显示全部楼层
  1. def fun360(A, B):
  2.         m = len(A)
  3.         n = len(B)
  4.         if m != n:
  5.             return False;
  6.         a=[0 for i in range(26)]
  7.         b=[0 for i in range(26)]
  8.         for i in range(m):
  9.             a[ord(A[i]) - ord('a')] += 1
  10.             b[ord(B[i]) - ord('a')] += 1
  11.         flag = 0
  12.         for i in range(26):
  13.             if a[i] != b[i]:
  14.                 return False
  15.             if a[i] > 1:
  16.                 flag = 1
  17.         temp = []
  18.         for i in range(m):
  19.             if A[i]!=B[i]:
  20.                 temp.append(i)
  21.         if 0 == len(temp):
  22.             if 1 == flag:
  23.                 return True
  24.             else:
  25.                 return False
  26.         if 2 == len(temp):
  27.             return True
  28.         return False
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-29 10:33:59 | 显示全部楼层
  1. def f345(a,b):
  2.     if len(a) != len(b) or len(a)<2:
  3.         return False
  4.     elif a == b and (a.find('aa') != -1 or a.find('bb') != -1):
  5.         return True
  6.     else:
  7.         l = []
  8.         for i in range(len(a)):
  9.             if a[i] != b[i]:
  10.                 l.append(i)
  11.         if len(l) == 2 and l[1]-l[0] ==1:
  12.             return True
  13.         else:
  14.             return False
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2020-3-29 11:20:03 | 显示全部楼层
a=input('请输入第一个字符串:')
b=input('请输入第二个字符串:')
l1=len(a)
l2=len(b)
m=0
if l1!=l2:
    print('Flase')
else:
    for i in range(l1):
        if a[i]!=b[i]:
            m+=1
            if m>2:
                 break
    if m==2:
        print ('Ture')
    elif m==0:
        for i in a:
            m=a.split(i)
            if len(m)>2:
                print('True')
                break
        else:
            print('Flase')
    else:
        print('Flase')

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-3-29 13:05:31 | 显示全部楼层
ouyunfu 发表于 2020-3-27 18:51
谢谢提示,已改

还是一样的错呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-29 13:05:54 | 显示全部楼层
March2615 发表于 2020-3-27 18:54
抱歉注释有点多,怕没考虑到某些情况

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 22:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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