Poznajemy koncepcję szybkiego i wolnego wskaźnika, która jest rozwinięciem koncepcji szybkiego wskaźnika, poznanego w poprzedniej lekcji.

Oto nasze napisy:

let string1 = ["a", "n", "ń", "a", "\0"];

let string2 = ["k", "a", "j", "a", "k", "\0"];

Chcemy wyznaczyć punkt środkowy. Dla parzystych będzie to druga środkowa litera (ń), dla nieparzystych środkowa litera (j).

I generalnie wolno nam używać szybkiego wskaźnika i wolnego wskaźnika.

Szybki wskaźnik:

  • porusza się o 2 w jedną stronę
  • może sprawdzać swoją wartość oraz wartość elementu o 1 większego (o 1 przesuniętego w stronę, w którą się porusza)

Wolny wskaźnik – po prostu porusza się o 1 w tę samą stronę co szybki o 2.

Ok, piszemy:

function cStyleStringFindMidpoint(string){

    let fast = 0;
    let slow = 0;

    while(string[fast] !== "\0" && string[fast+1] !== "\0"){

        fast += 2;
        slow += 1;

    }

    return string[slow];
}

console.log(cStyleStringFindMidpoint(string1));
//ń
console.log(cStyleStringFindMidpoint(string2));
//j

Ta koncepcja przyda nam się w przyszłości, i to bardzo.