2016-10-11 2 views
1

Я работаю над проектом, который требует найти аналогичный контакт.Алгоритм слияния контактов

I/P: это в форме

 
C1 -> [email protected],[email protected] ... (could be any size) 
C2 -> [email protected] 
C2 -> [email protected],[email protected] 
C4 -> [email protected],[email protected] 

Я хочу, чтобы сгруппировать контакты, как C2, C4 и объединить их вместе, потому что они имеют такую ​​же электронную почту.

+1

Я вижу C2 и C4 имеют общие адреса, но не С1 и С4. – Arun

+0

@Arun спасибо, я отредактировал свой ответ –

+0

Может ли случиться, что C1 и C2 находятся в одной группе, но также C2 и C3 находятся в другой группе (например: c1: [a @ aa], c2: [a @ aa, b @ bb], c3: [b @ bb])? – yd1

ответ

2

Hash Адреса для контактов, а когда вы сталкиваетесь с адресом, который уже находится в hashmap, это общий контакт.

это примерно O(N)


Edit:

в случае, если есть более двух кандидатов с совпадающими писем, все они сгруппированы.

например.

С1 [email protected]
С1 [email protected]
С2 [email protected]
С2 [email protected]
С3 [email protected]
С3 [email protected]

1-й проход:
[email protected] => С1
[email protected] => С1
+ [email protected] => С2 (УЖЕ С1) => слияния С1 -> С2
[email protected] => [email protected] => C3 (уже C1) => Merge C1 -> C3 [email protected] => C3

теперь вы знаете, что вам нужно объединить: С2 в С1 и С3 в С1.

+0

У вас все еще может быть несколько общих сообщений, которые можно использовать для контактов , например. [email protected] -> C1, C2 [email protected] -> C4, C1 Я хочу сгруппировать весь набор. –

+0

@ KunalBalani тогда C1 & C2 должен быть одним и тем же лицом, если он делится [email protected], и C4 должен быть добавлен в эту группу 'того же человека' –

Смежные вопросы