Problem · String

Reverse First K Characters in Every 2K Block

Learn this problem
EasyArcesium logoArcesiumINTERNOA

Problem statement

Given a string s and a positive integer k, process s from left to right in consecutive blocks of 2 * k characters.

  • For every complete block of 2 * k characters, reverse its first k characters and leave its next k characters unchanged.
  • If fewer than k characters remain, reverse all remaining characters.
  • If at least k but fewer than 2 * k characters remain, reverse the first k remaining characters and leave the rest unchanged.

Return the transformed string.

Function

reverseFirstKInEvery2KBlock(s: String, k: int) → String

Examples

Example 1

s = "abcdefgh"k = 2return = "bacdfegh"

In abcd, reverse ab to obtain bacd. In efgh, reverse ef to obtain fegh. Combining the blocks gives bacdfegh.

Example 2

s = "abcdefg"k = 3return = "cbadefg"

Reverse abc in the first six-character block, producing cbadef. Only g remains, so reversing the final one-character suffix leaves it unchanged.

More Arcesium problems

drafts saved locally
public String reverseFirstKInEvery2KBlock(String s, int k) {
    // Write your code here.
}
s"abcdefgh"
k2
expected"bacdfegh"
checking account