2011-04-01 62 views
0

我有一個字符串列表(來自CouchDB中的文檔)。使用map/reduce找到最短的唯一前綴長度

我想找到最小的前綴長度,以便所有縮短的字符串(取第一個LEN字符)都是唯一的。

例如:

  • AABB
  • AABC
  • ABCD

應該給:LEN爲三個。

是否可以將其寫爲地圖/縮小功能?

+0

所有長度看着你的榜樣。 – 2011-04-03 11:43:20

+0

如果列表不是太長,可以使用[list function](http://guide.couchdb.org/draft/transforming.html)輕鬆搞定。 – 2011-04-03 13:47:47

回答

0

做它蠻力方式:

MAP:爲每個輸入記錄 「ABCDE」 的鑰匙 記錄 - 「A」 - 「AB」 - 「ABC」 - 「ABCD」 - 「ABCDE」

減持:

  • ,如果你有在迭代器的輸出值1: 「長(鍵)」, 「真」
  • 如果在迭代器輸出超過一個1值:「長度(密鑰)」,「假」

MAP:身份映射器

REDUCE:輸出「真」,如果所有的輸入值都爲真。否則輸出錯誤(或沒有);

這應該導致一個真正的,因爲我本來期望「LEN = 4」爲你顯示,與「AAB」開頭兩行是「獨一無二」的