- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
unsigned int FileScanner::smartBruteForce(QByteArray &haystack, QByteArray &needle)
{
unsigned int count = 0;
unsigned int dataSize = haystack.size();
unsigned int needleSize = needle.size();
unsigned int needleSizeCut = needleSize - 1;
char* dp = haystack.data();
char* np = needle.data();
char lastNeedle = *(np + needleSize - 1);
for(unsigned int i = 0; i < dataSize - needleSize + 1; i++)
{
if(*(dp + (i + needleSizeCut)) != lastNeedle) //This is smart technology ))))
continue;
unsigned int j;
for(j = 0; j < needleSize; j++)
{
if(*(dp + (i + j)) != *(np + j))
break;
}
if(j == needleSize)
count++;
}
return count;
}
laMer007 20.02.2016 12:03 # 0
bormand 20.02.2016 20:45 # +2
laMer007 20.02.2016 22:08 # 0
roman-kashitsyn 20.02.2016 22:27 # +1
Да ему и до Бойера-Мура тут совсем немного осталось!
3_dar 21.02.2016 19:26 # 0
kegdan 21.02.2016 21:43 # 0