La variante di conteggio BloomFilter proposta da @CodesInChaos dovrebbe funzionare bene, è necessario scegliere da vicino l'algoritmo di hash, è probabile che ci siano collisioni che potrebbero distorcere i risultati. È possibile utilizzare 2-3 diversi hash per creare una singola chiave su cui contare.
Un approccio più semplice e brutale in cui è possibile utilizzare un database, un semplice embeded dovrebbe fare il trucco (SQlite, berkely db ecc.). Archiviare le stringhe e un contatore, quindi interrogare per ottenere quelli in cui sei stato interrotto, quindi eliminare tutto il database nel caso in cui non sia necessario. La RAM è costosa, ma è necessario disporre di spazio su disco. Tuttavia, sarà un po 'più lento in fase di esecuzione rispetto a un approccio interamente in memoria. Detto questo, devi comunque leggere le stringhe dal disco quindi tutto sommato non dovrebbe aggiungere un sovraccarico, specialmente se le stringhe si ripetono spesso, il database alla fine dovrebbe essere molto più piccolo del set di dati originale . Nel peggiore dei casi sarà lo spazio per tutte le stringhe + un int + piccolo overhead del database.
Infine, le tue stime (56 GB) sono nel peggiore dei casi, che sarà effettivamente il caso se tutte le tue stringhe sono diverse. ma qualcosa mi dice che i dati effettivi memorizzati saranno molto meno, darei la soluzione di mappa semplice morta prima. Memorizzare la stringa come chiave e contatore e scorrere. La cosa peggiore che succederà è che la tua app riempirà la ram e andrà in crash. Se funziona, ottieni la tua risposta con una dozzina di loc. Almeno avresti un'idea di come appaiono i dati.
---- Modifica
Idea Flash, potresti finalmente concatenare le stringhe con un separatore e utilizzare l'algoritmo di ricerca delle stringhe sul tutto. Abbastanza frequente approccio nella ricerca di modelli genetici in cui il set di dati può diventare grande come si descrive
Controlla la ricerca Z-Box link
oppure il classico link del classico Boyer-Moore
entrambi i quali ho provato in passato con un certo successo per problemi simili.