i die folgende FunktionFinden gebräuchlichste Paar von Zeichen in einer Zeichenkette
//O(n^2)
void MostCommonPair(char * cArr , char * ch1 , char * ch2 , int * amount)
{
int count , max = 0;
char cCurrent , cCurrent2;
int i = 0 , j;
while(*(cArr + i + 1) != '\0')
{
cCurrent = *(cArr + i);
cCurrent2 = *(cArr + i + 1);
for(j = i , count = 0 ; *(cArr + j + 1) != '\0' ; j++)
{
if(cCurrent == *(cArr + j) && cCurrent2 == *(cArr + j + 1))
{
count++;
}
}
if(count > max)
{
*ch1 = cCurrent;
*ch2 = cCurrent2;
max = *amount = count;
}
i++;
}
}
für folgende Eingabe
"xdshahaalohalobscxbsbsbs"
ch1 = b ch2 = s amount = 4
geschriebenaber meiner Meinung nach ist die Funktion sehr uneffizient, gibt es eine Möglichkeit, die Zeichenkette nur einmal zu durchlaufen oder die Laufgröße auf O (n) zu reduzieren?
beachte, dass die OP ist mit dem höchsten Zählwert für das zusammenhängende Zeichenpaar suchen. – hatchet