kinkon
发表于 2020-2-28 19:44:44
优化一下
def f338(lst):
t = set("qwertyuiop")
m = set("asdfghjkl")
l = set("zxcvbnm")
n = []
for i in lst:
k = set(i.lower())
if k & t == k or k & m == k or k & l == k:
n.append(i)
return n
kinkon
发表于 2020-2-28 19:46:19
zltzlt 发表于 2020-2-28 19:37
解答错误
输入:['qaz', 'wsx', 'edc', 'rfv', 'tgb', 'yhn', 'ujm', 'ik', 'pklo', 'ppppppp']
下面已改,还以为是首字母要大写的{:10_247:}
zltzlt
发表于 2020-2-28 19:46:53
kinkon 发表于 2020-2-28 19:44
优化一下
108 ms
fan1993423
发表于 2020-2-28 19:57:35
我4,5,6楼的答案不测吗?
zltzlt
发表于 2020-2-28 19:58:10
fan1993423 发表于 2020-2-28 17:18
差集
300 ms
鱼C之斗者
发表于 2020-2-28 19:58:14
本帖最后由 鱼C之斗者 于 2020-2-28 20:13 编辑
list1 = ['qwertyuiopQWERTYUIOP','asdfghjklASDFGHJKL','zxcvbnmZXCVBNM']
list2 = 'list2 = '+input('请输入一个单词列表')
exec(list2)
list2_len = len(list2)
list3 = []
a = 0
while a < list2_len:
for b in list1:
c = len(list2)
f = 1;
for d in range(c):
if list2 not in b:
f=0
break;
if f:
list3.append(list2)
a += 1;
if len(list3):
print(list3)
fan1993423
发表于 2020-2-28 19:58:52
kinkon 发表于 2020-2-28 19:38
解题思路居然和你的很接近
很正常,有集合的想法的话,就是差集,并集,交集,子集,不用的话就一个一个字母去比照,应该没有其他方法了
zltzlt
发表于 2020-2-28 19:59:03
fan1993423 发表于 2020-2-28 17:20
交集
468 ms
zltzlt
发表于 2020-2-28 19:59:32
fan1993423 发表于 2020-2-28 17:21
并集
解答错误
输入:["asdfghjkla","qwertyuiopq","zxcvbnzzm","asdfghjkla","qwertyuiopq","zxcvbnzzm"]
输出:["asdfghjkla","qwertyuiopq","asdfghjkla","qwertyuiopq"]
预期结果:["asdfghjkla","qwertyuiopq","zxcvbnzzm","asdfghjkla","qwertyuiopq","zxcvbnzzm"]
fan1993423
发表于 2020-2-28 20:01:02
zltzlt 发表于 2020-2-28 19:59
解答错误
输入:["asdfghjkla","qwertyuiopq","zxcvbnzzm","asdfghjkla","qwertyuiopq","zxcvbnzzm"]
...
已改,忘了把最后的middle改为bottom
zltzlt
发表于 2020-2-28 20:01:51
fan1993423 发表于 2020-2-28 20:01
已改,忘了把最后的middle改为bottom
嗯嗯,558 ms
fan1993423
发表于 2020-2-28 20:02:37
难道集合中还是子集速度最快吗{:10_250:},本来最先想用子集的话,为了不和冬雪大佬一个思路没用{:10_250:}{:10_245:}
fan1993423
发表于 2020-2-28 20:12:14
不对啊,我交集的答案和21楼一样,为什么它才100多ms,我是400多ms
zltzlt
发表于 2020-2-28 20:18:35
fan1993423 发表于 2020-2-28 20:12
不对啊,我交集的答案和21楼一样,为什么它才100多ms,我是400多ms
你 set() 的次数太多了,我这里用的是超大的数据
fan1993423
发表于 2020-2-28 20:31:10
zltzlt 发表于 2020-2-28 20:18
你 set() 的次数太多了,我这里用的是超大的数据
那行嘛,以后把set()单独赋值,我没想到这种影响速度
zltzlt
发表于 2020-2-28 20:32:16
fan1993423 发表于 2020-2-28 20:31
那行嘛,以后把set()单独赋值,我没想到这种影响速度
{:10_250:}
阴阳神万物主
发表于 2020-2-28 21:34:15
zltzlt 发表于 2020-2-28 18:56
解答错误
输入:["Hello", "Alaska", "Dad", "Peace"]
惊了!!虽然的确这个解答有错,但是预期结果也是个错的耶。与示例有悖逆。
我就是针对的那个 'Hello'
kinkon
发表于 2020-2-28 22:07:25
本帖最后由 kinkon 于 2020-2-28 22:19 编辑
一行有点长,缩成两行,酱紫不知道会不会快一些
def p338(lst):
al = set("qwertyuiop"),set("asdfghjkl"),set("zxcvbnm")
return for i in range(len(lst)) for j in al if set(lst.lower()) <= j]
一行的也加上好了{:10_279:}
def p338(lst):
return for i in range(len(lst)) for j in if set(lst.lower()) <= j]
TJBEST
发表于 2020-2-28 22:22:16
我来晚了,看看速度
def fun338(strArr):
Keyboard = []
Keyboard.append('QqWwEeRrTtYyUuIiOoPp')
Keyboard.append('AaSsDdFfGgHhJjKkLl')
Keyboard.append('ZzXxCcVvBbNnMm')
def inWhich(character):
for i in range(0,3):
if character in Keyboard:
return i
def isWordOk(word):
try:
state = inWhich(word)
except Exception:
return False
for each in set(word):
if each not in Keyboard:
return False
return True
result = []
for eachWord in strArr:
if isWordOk(eachWord):
result.append(eachWord)
return result
TJBEST
发表于 2020-2-28 22:24:33
zltzlt 发表于 2020-2-28 18:56
解答错误
输入:["Hello", "Alaska", "Dad", "Peace"]
你这个不对呀,Hello不是同一行的吧,和实例不一样