Magicsheet logo

Reverse String II

Easy
37.5%
Updated 8/1/2025

Reverse String II

What is this problem about?

The Reverse String II interview question is a variation of the basic string reversal. Given a string s and an integer k, reverse the first k characters for every 2k characters in the string. If fewer than k characters remain at the end of a 2k block, reverse all remaining characters. If between k and 2k characters remain, reverse only the first k and leave the rest as-is.

Why is this asked in interviews?

This problem is asked at Microsoft, Infosys, Meta, Amazon, Google, and Bloomberg as a step-up from basic reversal. It tests whether candidates can implement a pattern with a more complex periodic rule — iterating in blocks of 2k and applying selective reversal. This type of patterned transformation appears in data encoding, cipher design, and protocol-level data formatting.

Algorithmic pattern used

The pattern is block-based iteration with conditional reversal. Convert the string to a list for mutability. Iterate with a step of 2k, taking index i at each step. In each block starting at i, reverse the substring s[i:i+k] (or from i to the end of the string if fewer than k characters remain). Leave s[i+k:i+2k] unchanged. Reconstruct the string at the end.

Using Python slicing:

s = list(s)
for i in range(0, len(s), 2*k):
    s[i:i+k] = s[i:i+k][::-1]
return ''.join(s)

Example explanation

s = "abcdefg", k = 2.

Block 0 (i=0): characters s[0:2] = "ab" → reverse → "ba". s = "bacdefg". Block 1 (i=4): characters s[4:6] = "ef" → reverse → "fe". s = "bacdfe" + "g""bacdfe g".

Wait, let's retrace: after first block reversal of "ab": s = "bacdefg". Block 2 (i=4): s[4:6] = "ef" → reverse → "fe". s = "bacdfe g".

Result: "bacdfeg".

Common mistakes candidates make

  • Not handling the case where i+k exceeds the string length — Python slicing handles this gracefully (s[i:i+k] automatically clips to end), but explicit indexing in other languages requires care.
  • Reversing the wrong portion: always reverse s[i:i+k], never s[i+k:i+2k].
  • Forgetting to work with a mutable copy (list) of the string.
  • Using step size k instead of 2k in the outer loop.

Interview preparation tip

For the Reverse String II coding problem, the two-pointer and string interview pattern with block-based iteration is the approach. Python's list slicing makes this elegant. Interviewers at Infosys and Accenture often test this problem's edge cases: what if k > len(s)? (reverse the whole string), what if s has length exactly 2k? Practice both Python's slice-based solution and a manual two-pointer reversal within the block to show depth. Know the time complexity: O(n).

Similar Questions