私は文字列のシーケンスを持っています - 0000001, 0000002, 0000003....
まで2百万。彼らは連続していません。隙間があることを意味する。 0000003の後に次の文字列が0000006であるかもしれません。私はこれらのすべてのギャップを見つける必要があります。上記の場合(0000004、0000005)。文字列のシーケンスのギャップを見つける
これは私がこれまでにやっていることである -
gaps = list()
total = len(curr_ids)
for i in range(total):
tmp_id = '%s' %(str(i).zfill(7))
if tmp_id in curr_ids:
continue
else:
gaps.append(tmp_id)
return gaps
をしかし、あなたは推測しているだろうと私はlist
を使用しておりますので、これは遅いです。 dict
を使用すると、curr_idsをあらかじめ入力すると処理が高速になります。しかし、ハッシュテーブルにデータを入れることにはどんな複雑さがありますか?これを行う最速の方法は何ですか?
を作ることをお勧めは、ソートされた入力リストですか? – khachik
連続しているわけではありませんが、順番に並んでいますか? –
@khachik、@paulはい入力がソートされています...すべてのパフォーマンスを改善すれば、どんな場合でもソートできます。 –