一个账号
发表于 2020-3-27 18:38:57
zltzlt 发表于 2020-3-27 18:37
?
原题是:给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。
March2615
发表于 2020-3-27 18:40:38
zltzlt 发表于 2020-3-27 18:36
解答错误
输入:a = "abab", b = "abab"
这不是可以把a中的两个a交换位置吗?
感觉今天的题想不到的情况有点多啊
永恒的蓝色梦想
发表于 2020-3-27 18:44:37
zltzlt 发表于 2020-3-27 18:38
写完🌶{:10_256:}
一个账号
发表于 2020-3-27 18:46:08
本帖最后由 一个账号 于 2020-3-27 18:53 编辑
class Solution:
def buddyStrings(self, A: str, B: str) -> bool:
if len(A) != len(B): return False
if A == B and len(set(A)) < len(A): return True
dif = [(a, b) for a, b in zip(A, B) if a != b]
return len(dif) == 2 and dif == dif[::-1]
ouyunfu
发表于 2020-3-27 18:46:36
更正def f360(a:str,b:str)->bool:
m,n = len(a),len(b)
L=!=b]
if m!=n:
return False
elif a==b:
if list(a)==list(reversed(a)):
return True
else: return False
elif a[:L]+a]+a+1:L]+a]+a+1:]==b:
return True
else: return False
zltzlt
发表于 2020-3-27 18:47:41
ouyunfu 发表于 2020-3-27 18:46
更正
解答错误
输入:a = "", b = ""
输出:True
预期结果:False
ouyunfu
发表于 2020-3-27 18:51:27
zltzlt 发表于 2020-3-27 18:47
解答错误
输入:a = "", b = ""
谢谢提示,已改
def f360(a:str,b:str)->bool:
m,n = len(a),len(b)
L=!=b]
if m!=n:
return False
elif a==b:
if a=='':
return True
elif list(a)==list(reversed(a)):
return True
else: return False
elif a[:L]+a]+a+1:L]+a]+a+1:]==b:
return True
else: return False
March2615
发表于 2020-3-27 18:54:33
本帖最后由 March2615 于 2020-3-27 19:09 编辑
zltzlt 发表于 2020-3-27 18:28
解答错误
输入:a = "aa", b = "aa"
def daily360(a: str, b: str) -> bool:
# 如果两个字符串不同
# 1. 长度不同 -> 不可互换
# 2. 不同的地方大于2 -> 不可互换
# 3. 不同的地方字母不同 -> 不可互换
# 如果两个字符串相同
# 1. 字符串内有相同字符 -> 可以互换
# 2. 字符串内无相同字符 -> 不可互换
# 3. 字符串长度小于2 -> 不可互换
if a != b:
if len(a) != len(b): # 长度不同
return False
temp = []
for i in range(len(a)):
if a != b:
temp.append(a)
temp.append(b)
# !=4->不同的地方大于2
# 不是对称的说明不同的地方字母不同
if len(temp) != 4 or list(reversed(temp)) != temp:
return False
else:
return True
else:
if len(a) < 2:
return False
temp = {}
for each in a:
if each in temp:
return True
temp = 1
return False
抱歉注释有点多,怕没考虑到某些情况
塔利班
发表于 2020-3-27 19:38:02
def f360(a,b):
if len(a)!=len(b):
return False
t=0
l=[]
for i in range(len(a)):
if a!=b:
t+=1
if t>2:
return False
l.append(,b])
if not t:
return True
elif t==2:
return l==l[-1][::-1]
else:
return False
TJBEST
发表于 2020-3-27 20:43:22
本帖最后由 TJBEST 于 2020-3-27 21:19 编辑
来个没效率的
def fun360(a,b):
if len(a) != len(b):
return False
M = len(a)
index_arr = !=b]
if len(index_arr) == 2:
if a] == b] and a] == b]:
return True
else:
return False
elif len(index_arr) == 0:
for index in range(0,M-1):
if a == a:
return True
return False
else:
return False
whosyourdaddy
发表于 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 != b:
print("different")
count +=1
if count > 2:
return False
temp.append(a)
temp.append(b)
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
BngThea
发表于 2020-3-27 21:23:12
本帖最后由 BngThea 于 2020-3-30 19:14 编辑
def cmp(str1,str2):
if len(str1) != len(str2):
return False
elif set(str1) != set(str2):
return False
else:
tmp=[(x,y) for x,y in zip(str1,str2) if x != y]
if not tmp:
if len(set(str1)) == len(str1):
return False
else:
return True
return len(tmp) == 2 and tmp[::-1] == tmp
pass
Herry2020
发表于 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) >= 2:
result = True
else:
for i in range(n):
if a != b:
list1.append((a))
list2.append(b)
if len(list1) != len(list2) or len(list1) != 2 :
result = False
else:
if list1 == list2 and list1 == list2:
result =True
return result
print(fun360(c, d))
旅途Z
发表于 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 != str2:
diff_list.append(index)
if len(diff_list) == 0:
return str1 == "" or len(str1) != len(set(str1))
elif len(diff_list) == 2:
return str1] == str2] and str1] == str2]
else:
return False
flamezyy
发表于 2020-3-28 13:22:14
本帖最后由 flamezyy 于 2020-3-28 13:31 编辑
def f360(a,b):
base = []
comp = []
times = 0
if (len(a) != len(b)) or (len(a) == 0):
return False
if a == b:
return True
for i in range(len(a)):
if a != b:
base.append(a)
comp.append(b)
times += 1
if times > 2:
return False
comp.reverse()
if base == comp:
return True
else:
return False
mdphd
发表于 2020-3-28 20:24:08
def f360(a,b):
if len(a) != len(b):
return False
else:
d = []
for i in range(len(a)):
if a != b:
d.append(i)
c = len(d)
if c == 0:
if len(a) == len(set(a)):
return False
else:
return True
elif c == 2 and a] == b] and a] == b]:
return True
else:
return False
l0stparadise
发表于 2020-3-28 20:48:28
本帖最后由 l0stparadise 于 2020-3-28 21:20 编辑
def f360(a,b):
if len(a) != len(b):
return False
if len(a) < 2 or len(b) < 2:
return False
list_a_dif = []
list_b_dif = []
list_a_same = []
list_b_same = []
for i in range(len(a)):
if a != b:
list_a_dif.append(a)
list_b_dif.append(b)
else:
list_a_same.append(a)
list_b_same.append(b)
if len(list_a_dif) != len(list_b_dif):
return False
if len(list_a_dif) == len(list_b_dif) == 0:
if len(set(list_a_same)) < len(list_a_same):
return True
else:
return False
if len(list_a_dif) == len(list_b_dif) == 2:
if list_a_dif == list_b_dif[::-1]:
return True
else:
return False
else:
return False
蒋博文
发表于 2020-3-28 21:51:29
先占楼。楼主,你先别揭帖。我还想答题{:5_96:}
zltzlt
发表于 2020-3-29 08:06:38
蒋博文 发表于 2020-3-28 21:51
先占楼。楼主,你先别揭帖。我还想答题
OK
蒋博文
发表于 2020-3-29 09:59:04
def fun360(A, B):
m = len(A)
n = len(B)
if m != n:
return False;
a=
b=
for i in range(m):
a) - ord('a')] += 1
b) - ord('a')] += 1
flag = 0
for i in range(26):
if a != b:
return False
if a > 1:
flag = 1
temp = []
for i in range(m):
if A!=B:
temp.append(i)
if 0 == len(temp):
if 1 == flag:
return True
else:
return False
if 2 == len(temp):
return True
return False