Recently, I applied a job in a certain company that was hiring a React developer. I sent my CV, did a coding assessment and passed. After this I was invited for an in-person interview where I was required to write code on paper.
The coding problem was: write code in the programming language of your choice that rotates a given string a specified number of times.
At first I freaked out as I had not tackled such a problem before, keep in mind that I am not a guru. I took the pen and paper and started writing code.
After struggling for a few minutes, I was able to write code for positive number rotation but I didn't know that they also required the code to also handle negative number rotation and my time was up.
Anyway, I was able to solve the negative rotation part in my mind on my way home and I want to share it here in case you ever encounter such a problem.
Here's is the JS code to rotate a string(handles both left and right rotation):
const rotate = (text, n) => {
txtArr = text.split("")
if(n>0){
for(let i = 1; i<=n; i++){
let firstel = txtArr[0]
txtArr.shift()
txtArr.push(firstel)
}
}
else if(n<0){
for(let i = -1; i>=n; i--){
let lastel = txtArr[txtArr.length-1]
txtArr.pop()
txtArr.unshift(lastel)
}
}
console.log(txtArr.join(""))
}
rotate("hello", -2)
Code explanation:
I will explain the code with the steps involved:
- Convert the text into an array using the
text.split()
method. - Use an
if
statement to check whethern
is positive,n>0
. - If
n
is positive:
use a
for
loop to loop through thetextArr
n
times.get the first element in the array using
txtArr[0]
Remove the first array element using
txtArr.shift()
Add the first array element to the end of the aaray using
txtArr.push(firstel)
4.If n
is negative:
use a
for
loop to loop through thetextArr
n
times.get the last element in the array using
txtArr[txtArr.length - 1]
Remove the last array element using
txtArr.pop()
Add the last array element to the beginning of the aaray using
txtArr.unshift(lastel)
5.If n
is equal to 0, return it as it is
Conclusion
That's all for this article. Hope you learn a thing or two. See you in the next one :)
Top comments (0)