Alqoritm Müsahibəsi Sual: JavaScript istifadə edərək bir tamı necə dəyişdirmək olar

Bir çox Proqram Mühəndisliyi Müraciətçilərinin aldıqları ortaq bir müsahibə sualı, əks ədəddir: "Bir ədəd verildiyi təqdirdə ədədlərin tərs sırası olan bir ədəd qaytarın". Bu kifayət qədər sadə görünür, amma bir çox yeni başlayan proqramçı tez-tez tam bir həll yolu tapmaq üçün mübarizə aparırlar. Bu blog dərin bir araşdırmaya və bu problemin cavabını bölməyə keçəcəkdir.

Əvvəlcə cavabı təqdim edəcəyəm və sonra cavabın hər tərəfini izah edəcəyəm.

funksiya reverseInt (n) {
const ters = parseInt (n.toString (). split (''). ters (). join (''))
Math.sign (n) * tərsinə qayıt
}

Bunu daha da araşdıraq.

Addım 1) Əvvəlcə bir sıra (n) arqumentini alan reverseInt adlı bir funksiya yaradırıq. JS-də bir sıra dəyişdirmək üçün daxili bir yol olmadığı halda, bir sıra məzmununu dəyişdirmək üçün .reverse () adlandırıla biləcəyini bilirik. Bəs bir tamı necə bir massivə çevirmək olar? Bu iki addımlı bir prosesdir. 531 nömrəsindən başlayaq. Tərs deyilən bir dəyişən yaradaq.

Addım 2) Bunu başlatmaq üçün tam ədədi simə çevirməliyik və buna görə n.toString () ilə başlayırıq. 531.toString () adlandırsaq 531 "531" olacaq.

Addım 3) Sətir kimi tam ədəd var, sətrdə .split ('') deyə bilərik. JavaScript-dəki .split funksiyası ilə tanış deyilsinizsə, bu linkə baxın. Splitdə ayırıcı və məhdud seçim var. Boş bir simli ("") ayırıcı kimi istifadə olunursa, simli hər simvol arasında bölünür. Bu "parçalanmış" maddələr ilə bir sıra qaytarır. İndi hər bir element başlanğıc nömrəsinin hər rəqəmini təmsil etdiyi bir sıra var. "531" indi [5, 3, 1]

Addım 4) Artıq bir sıra olaraq tam rəqəmə sahib olduğumuz üçün .reverse () adlandıra bilərik. Dizi [5, 3, 1] olarsa, indi olacaq [1, 3, 5]. İndi onu serial şəklində tərsinə çevirdiyimiz üçün növbəti addımımız onu yenidən simə çevirməkdir.

Addım 5) Bir serialı simli hala gətirmək üçün .join () metodunu boş sətrin ("") parametrləri ilə massivə çağırmalıyıq. Bu, məsələn, [1, 3, 5] serialımızı alacaq və onu "135" sətirinə çevirəcəkdir.

Addım 6) İndi çox yaxınıq! Sətirimizi tərsinə çevirdik, indi sətri tam ədədə çevirməliyik. Bunu etməyimizin yolu parseInt () -ə ötürməkdir. Bir dəfə "135" sətirində parseInt deyəndə nəticə 135 olur.

Addım 7) Bu vacib addımdır, çünki tam ədədlər müsbət və ya mənfi ola bilər! Math.səhv et! Math.sign () tam ədəd alır və işarəsinə əsasən ya 1, ya da 1-i qaytarır. Math.sign-a dəlil olaraq n-i ötürsək, müsbət sayı olduqda bizə 1, mənfi bir ədəd olduqda -1 verərsə, Math.sign (n) nəticəsini çoxaltmaq lazımdır. cavabımızı almaq üçün aldığımız tərs dəyişən tam ədədlə!

Orada var, tərs tam məsələni həll etmək üçün sadə və effektiv metodun dərin izahı. Xoşbəxt kodlaşdırma!