JS Interview Prep: Reverse a String
If you're ever interviewing for a developer job the expectation you should have is to answer some type of algorithm, white-boarding, or architecture question. I want to provide a gentle introduction to some of the questions I've encountered and prep my readers on questions you could potentially expect. The format of each of my posts will generally work like this
- Question
- Answer // Why does it work?
- Conclusion // Last thoughts
Note: There will be times where I can provide more than one solution.
Without further ado lets begin!
Question
Given a string, return the new string with the reversed order of characters.
reverse('dog') === 'god'
reverse('hello') === 'olleh'
reverse('yolo') === 'oloy'
Answer
There are many ways you can solve this problem. If you have the option to utilize javascript's built in functions like reverse()
then I would recommend the solution below.
Solution 1
function reverse(string) {
return string
.split('')
.reverse()
.join('');
}
Explanation
split
the input string into an array. For example, if the string was"dog"
the array would look like['d', 'o', 'g']
.reverse
the array. `['g', 'o', 'd']- merge the elements together via
join
.god
Solution 2
In the case your interviewer does not allow you to use the reverse
function. You can try the solution below
function reverse(str) {
return str.split('').reduce((acc, curr) => {
return curr + acc;
}, '');
}
Explanation
Similar to solution 1, the string needs to be split into an array. After the array is split you can utilize javascript's built in function called reduce
. Reduce is a type of looping function. In the example above, acc
is the accumulated value and curr
is the current element in the loop. So if the input was dog
. The pseudo result of what is actually happening is shown below.
dog split --> ['d', 'o', 'g']
[dog] reduce -->
# curr = 'd', acc = ''
return 'd' + '' --> 'd'
# curr = 'o', acc = 'd'
return 'o' + 'd' --> 'od'
# curr = 'g', acc = 'od'
return 'g' + 'od --> 'god'
Conclusion
There are many other solutions that exist for this particular problem, but I hope the two I provided makes sense. This is the first attempt at providing solutions so feedback is definitely welcome! Have a good Thanksgiving everyone!
Resources:
Reduce Function