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
ifstatement to check whethernis positive,n>0. - If
nis positive:
use a
forloop to loop through thetextArrntimes.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
forloop to loop through thetextArrntimes.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)