擅长:python、mysql、java
<pre><code>def merge_seg(s):
index_i = 0
while index_i+1<len(s):
index_j=index_i+1
while index_j<len(s):
if c[index_i][-1] == c[index_j][0]:
c[index_i].extend(c[index_j][1:])
del c[index_j]
elif c[index_i][-1] == c[index_j][-1]:
c[index_i].extend(c[index_j].reverse()[1:])
del c[index_j]
else:
index_j+=1
index_i+=1
result = []
s.reverse()
for seg_index in range(len(s)-1):
result+=s[seg_index][:-1]#use [:-1] to delete the duplicate items
result+=s[-1]
return result
</code></pre>
<p>在内部while循环中,s[index_i]的每个连续段都附加到s[index_i]
然后索引_i++直到每个段都被处理。
因此很容易证明,在这些while循环之后,s[0][0]==s[1][1],s[1][0]==s[2][1],等等。所以只要把列表倒过来,把它们放在一起,你就会得到结果。在</p>
<p><strong>注意</strong>:这是最简单、最直接的方法,但不是最省时的</strong>。在</p>
<p>有关更多算法,请参见:<a href="http://en.wikipedia.org/wiki/Sorting_algorithm" rel="nofollow">http://en.wikipedia.org/wiki/Sorting_algorithm</a></p>