PAT (Basic Level) Practice Python解法 1093 字符串A+B(顺序去重/chr与ord/asc2码/内存超时/原顺序输出)
a = list(input())
b = list(input())
a.extend(b)
total1 = list(set(a))
total1.sort(key=a.index)#用原列表的index顺序来控制本身无序的set的输出。
print(''.join(total1))
我老是写totalotp = total1.sort(key=a.index)
这样的憨批代码出来,报错就是None
希望能记得list.method
是对列表方法,是对对象list
本身的操作,是没有返回的。
坑点4和5卡了内存控制。
第一次是盲写,4和5都超时了。
a = list(input())
b = list(input())
otp = []
for ck in a:
if ck not in otp:
otp.append(ck)
for ck in b:
if ck not in otp:
otp.append(ck)
print(''.join(otp))
第二次猜了一下,最长输出长度也就是32-126加上空格,所以建了个标准set
,满了就break
不再计算,因为后面出现的字符前面已经全部出现过了。
结果5还是超时了。(而且4的运行时间还是超出想象。)
a = list(input())
b = list(input())
otp = []#最长输出长度也就是asc2和空格的顺序,如果后面全部重复就stop
stan = set(chr(i) for i in range(32,127))#chr()ord()相互转换
stan.add(' ')
for ck in a:
if ck not in otp:
otp.append(ck)
if set(otp)==stan:
break
for ck in b:
if ck not in otp:
otp.append(ck)
if set(otp)== stan:
break
print(''.join(otp))
最后直接两个字符串先extend
序列合并,之后set
去重后按照合并后顺序join
输出才逃过一劫。
考试这个速度我已经欢声笑语打出GG了,我恨.jpg