我正在尝试解决一个leetcode练习题,这个问题是将2个字符串中词典编纂顺序较小的每个字符合并成一个字符串,下面是一个例子。x1c 0d1x
这是我尝试过的:
def solution(s1, s2):
s1=list(s1);s2=list(s2)
res=[]
while(1):
if len(s1)==0:
res+=s2
return ''.join(res)
elif len(s2)==0:
res+=s1
return ''.join(res)
else:
if s1[0]< s2[0]:
res.append(s1[0])
s1.remove(s1[0])
else:
res.append(s2[0])
s2.remove(s2[0])
测试运行的结果相当奇怪,因为我在一些情况下是正确的,但在其他情况下是错误的(正确的(s1:“超级”,s2:“塔”==〉“stouperwer”)如预期),但像(s1:“enbvszyppzyiydnc”s2:“ousswsbeljamma”)结果是不同的(正确答案:“eounbvszswsbeljammayppzyiydnc”,我的输出:“enboussvswsbeljammazyppzyiydnc”)。也许,我错过了理解词典的东西在哪里。你们能让我知道吗?谢谢!
1条答案
按热度按时间tv6aics11#
可以使用
ord
比较两个字符串。使用reversed意味着不需要重复删除第一个数字(如果一直这样做,将花费O(n^2)),而是只能执行一次该过程。
另外,您使用
<
来比较字符串,但是如图所示,优先级来自第一个列表,因此应该是<=
。