Αλγόριθμος Ερώτηση συνέντευξης: Πώς να αντιστρέψετε έναν ακέραιο χρησιμοποιώντας JavaScript

Μια κοινή ερώτηση συνέντευξης που λαμβάνουν πολλοί υποψήφιοι Μηχανικών Λογισμικού είναι η αντίστροφη ακέραια ερώτηση, η οποία δηλώνει: "Λαμβάνοντας έναν ακέραιο, επιστρέφουμε έναν ακέραιο που είναι η αντίστροφη σειρά των αριθμών". Αυτό φαίνεται αρκετά απλό, αλλά πολλοί αρχάριοι προγραμματιστές συχνά αγωνίζονται να βρουν μια ολοκληρωμένη λύση. Αυτό το ιστολόγιο θα γίνει σε μια σε βάθος αναθεώρηση και ανάλυση της απάντησης σε αυτό το πρόβλημα.

Πρώτον, πρόκειται να παρουσιάσω την απάντηση, και στη συνέχεια θα καταρρεύσω και θα εξηγήσω κάθε πτυχή της απάντησης.

λειτουργία reverseInt (n) {
const αντίστροφη = parseInt (n.toString () split ('') αντίστροφη () join (''))
επιστροφή Math.sign (n) * αντίστροφη
}}

Ας το εξετάσουμε περαιτέρω.

Βήμα 1) Αρχικά, δημιουργούμε μια συνάρτηση που ονομάζεται reverseInt η οποία παίρνει ένα επιχείρημα ενός αριθμού (n). Παρόλο που δεν υπάρχει ενσωματωμένος τρόπος για την αντιστροφή ενός αριθμού στο JS, γνωρίζουμε ότι το .reverse () μπορεί να κληθεί να αντιστρέψει τα περιεχόμενα ενός πίνακα. Αλλά πώς θα μετατρέψει έναν ακέραιο σε πίνακα; Πρόκειται για μια διαδικασία δύο σταδίων. Ας ξεκινήσουμε με τον αριθμό 531. Ας δημιουργήσουμε μια μεταβλητή που ονομάζεται αντίστροφη.

Βήμα 2) Για να ξεκινήσει αυτό πρέπει να μετατρέψουμε τον ακέραιο σε μια συμβολοσειρά, οπότε ξεκινάμε με το n.toString () το οποίο επιτυγχάνει ακριβώς αυτό. 531 θα γίνει "531" αν καλέσουμε 531.toString () σε αυτό.

Βήμα 3) Έχουμε τον ακέραιο ως συμβολοσειρά, μπορούμε να καλέσουμε το .split ('') στη συμβολοσειρά. Αν δεν είστε εξοικειωμένοι με τη λειτουργία .split στο JavaScript, ελέγξτε αυτόν τον σύνδεσμο. Το διαχωριστικό έχει διαχωριστή και επιλογή ορίου. Αν χρησιμοποιείται ως διαχωριστής μια κενή συμβολοσειρά (""), η συμβολοσειρά χωρίζεται μεταξύ κάθε χαρακτήρα. Επιστρέφει έναν πίνακα με τα στοιχεία που ήταν "χωρισμένα". Τώρα έχουμε έναν πίνακα όπου κάθε στοιχείο αντιπροσωπεύει κάθε ψηφίο του αρχικού αριθμού. "531" είναι τώρα [5, 3, 1]

Βήμα 4) Τώρα που έχουμε τον ακέραιο ως πίνακα, μπορούμε να καλέσουμε το .reverse () στον πίνακα, το οποίο θα το αντιστρέψει. Εάν ο πίνακας είναι [5, 3, 1] τότε θα είναι [1, 3, 5]. Τώρα που το έχει αντιστραφεί σε μορφή πίνακα, το επόμενο βήμα είναι να το μετατρέψουμε σε μια συμβολοσειρά.

Βήμα 5) Για να μετατρέψουμε έναν πίνακα σε μια συμβολοσειρά, θα χρειαστεί να καλέσουμε τη μέθοδο .join () στον πίνακα με τις παραμέτρους μιας κενής συμβολοσειράς (""). Αυτό θα πάρει τη σειρά μας, για παράδειγμα [1, 3, 5] και θα μετατραπεί σε μια σειρά "135".

Βήμα 6) Είμαστε τόσο κοντά τώρα! Έχουμε αντιστρέψει τη συμβολοσειρά μας, τώρα πρέπει να μετατρέψουμε την αλυσίδα σε ακέραιο. Ο τρόπος που κάνουμε είναι να το περάσουμε σε parseInt (). Μόλις καλούμε parseInt στη συμβολοσειρά "135", το αποτέλεσμα μας είναι ο αριθμός 135.

Βήμα 7) Αυτό είναι ένα σημαντικό βήμα δεδομένου ότι οι ακέραιοι μπορούν να είναι θετικοί ή αρνητικοί! Math.sign στη διάσωση! Το Math.sign () παίρνει έναν ακέραιο αριθμό και με βάση το σύμβολο του, επιστρέφει είτε ένα είτε ένα -1. Αν περάσουμε το n ως το όρισμα στο Math.sign, θα μας δώσει 1 εάν είναι ένας θετικός αριθμός ή ένας -1 εάν είναι αρνητικός αριθμός, οπότε το μόνο που χρειάζεται να κάνουμε είναι να πολλαπλασιάσουμε το αποτέλεσμα του Math.sign (n) από τον αντίστροφο μεταβλητό αριθμό που λάβαμε για να λάβουμε την απάντησή μας!

Εκεί το έχετε, μια εις βάθος εξήγηση για μια απλή και αποτελεσματική μέθοδο επίλυσης για το αντίστροφο ακέραιο πρόβλημα. Ευτυχισμένη κωδικοποίηση!