Учитывая список слов = {w1, w2, w3, w1, w2}Найти все permitation для списка или списка слов в очень длинном тексте
Найти все перестановки выше список слов в длинном тексте.
длинный текстовый список = {Это длинный текст w1 w2 w3 w4 и w1 w2 w1 w2 w3. Это еще один длинный текст, который не имеет перестановку, поскольку он не содержит все слова w1, w2, w2, w2, w2, но это перестановка w2 w2 w3 w1 w1} разделены пробелом
Что является наиболее эффективным Алгоритм решения этой проблемы?
Я думал, что для каждого уникального слова в списке сначала присваивается кортеж (уникальный #, единственный простой #) {w1 = [101, 5], w2 = [103, 7], w3 = [205, 11] } и вычислить сумму для всего списка с помощью назначенных кортежей: w1 [101 * 5] + w2 [103 * 7] + w3 [205 * 11] + w1 [101 * 5] + + w2 [103 * 7] = 4707
Вот pudo-код:
targetSum = 4707;
long sum = 0;
for (int i = 0; i < Text.size(); i++){
look up (unique #, unique prime #)
sum + = ((unique # * unique prime) ;
if( i > list.size()){
sum = sum – (look up (unique #, unique prime # for index
(i – list.size()) and subtract tuple sum)
}
if(targetSum = = sum){
// this is possible match so hashMap lookup verify again that this reagion is actual match.
}
}
есть ли логика лучше или алгоритм для этого?
Update:
Я читал дальше шаблон согласования Z-алгоритма (Z-Boxes), но я не могу видеть, как Z-боксы или Z-массив будет сделать его лучше, если все перестановки не знать заранее. Не уверен, есть ли лучший способ?
Спасибо всем, кто делится знаниями.
Спасибо,
Bhavesh
Что вы имеете в виду уникальной #? Это число определенного слова, которое вы нашли в длинном тексте? Уникальный премьер - это оценка для этого слова? –
В чем проблема, с которой вы сталкиваетесь? – vish4071
Должны ли слова быть смежными? То есть, текст «blah w1 blah w2 blah w3 blah w1 blah w2» не будет считаться? –