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.