We wpisie @asdasty pojawiło się przykładowe pytanie z rozmowy rekrutacyjnej z front-endowcem.
-Determine if a given string is a palindrome.
Proste, prawda?
No to chętnie poprosiłbym funkcję w JavaScript, która sprawdza, czy zadany string jest palindromem (8pkt.). Wytłumaczenie, dlaczego nie jest to trywialne, wraz z podaniem przykładowego kłopotliwego stringa, jest za 2 pkt.
@Ginden: Nie jestem dzisiaj w nastroju do myślenia, pije sobie piwko i odpoczywam :) Ale mnie zainteresowałeś, więc możesz mnie zawołać jak będzie rozwiązanie. Ogólnie to można jeszcze sprawdzać znak po znaku od końca i początku do wewnątrz, ale coś czuję, że to i tak nie o to Ci chodzi.
@Ginden: Hmm, rozwiązywałem to zadanie w pewnym procesie rekrutacyjnym. Był to test online i miałem 15 minut na rozwiązanie. Więc było raczej mało czasu na szukanie rozwiązań, ale znalazłem wtedy szybko ogólny algorytm, który przeniosłem do JS (sam wtedy tego nie wydumałem :P)
@Ginden: Nie wiem, poddaje się, przyznam się patrzyłem po internetach i może być to przypadek gdy na przykład wstawimy http://en.wikipedia.org/wiki/Zero-width_non-joiner albo inne cholerstwo. Ale nie wiem, poczekam, aż ktoś mądrzejszy odpowie.
@Ginden: nie wiem na jakim palindromie sprawdzałeś ale ja sprawdziłem nawet 가련하시다 사장집 아들딸들아 집장사 다시 하련가 ;-) i zwraca prawidłowy wynik. Oczywiście są przypadki palindromów, które zapisuje się inaczej a czyta się inaczej (np. Japońskich) lub palindromów, które używają wyrazów zamiast liter jako jednostki porównania ale nie widzę tu nic specyficznego dla JavaScriptu
Proste, prawda?
No to chętnie poprosiłbym funkcję w JavaScript, która sprawdza, czy zadany string jest palindromem (8pkt.). Wytłumaczenie, dlaczego nie jest to trywialne, wraz z podaniem przykładowego kłopotliwego stringa, jest za 2 pkt.
#zagadkiprogramistyczne #javascript
Ranking:
- Marmite, 1pkt.
Komentarz usunięty przez autora
Komentarz usunięty przez autora
Ogólnie to zrobiłbym pewnie w pierwszej myśli takie głupie odwrócenie.
napis == napis.split('').reverse().join('');Natomiast jeszcze
@kasper93: Ciepło.
Dla pewnych stringów
Rozwiązanie:
false, mimo że palindromami są (w drugą stronę chyba się nie da).
@mk4s: A to jest sprytne i pewnie szybsze, ale odwracanie i porównanie teoretycznie powinno dawać takie same efekty. Ginden ma jakiś sprytny haczyk ;p
@kasper93:
var res = str.replace(/[^\w\s]|_/g, "").replace(/\s+/g,
Ale niestety, nadal nie działa.
Jak chcesz podpowiedź, to sprawdzałem