Introduction

Hello and welcome to our exciting exploration of Scala string manipulation! In today's lesson, you'll discover an intriguing way to select characters from a string using Scala's immutable StringOps and powerful collection methods. We aim to explain this in such a comprehensive and concise way that you'll master it swiftly. Let's dive in!

Task Statement

Imagine this: You are given a string, and you must traverse it to pick its characters in an unusual order. Start with the first character, then move to the last, pick the second character, then the second-to-last, and so on, until no characters are left to select. Sounds fascinating, doesn't it?

Here's what we mean:

You need to write a Scala function solution(inputString: String): String. This function will take inputString as a parameter, a string composed of lowercase English alphabet letters ('a' to 'z') with a length between 1 to 100 characters. The function will return a new string derived from the input string with characters selected in the aforementioned order.

For example, if inputString is "abcdefg", the function should return "agbfced".

Solution Building: Step 1 - Initialization

Before diving into problem-solving, let's set up our result store. In Scala, we use StringBuilder to construct a mutable string efficiently.

Scala
def solution(inputString: String): String = {
    val result = new StringBuilder
Step 2 - Looping over the string

Once initialized, we'll iterate over the inputString. Scala's Range and until offer a simple way to define loop ranges.

How many iterations are required? Since we are taking two characters per iteration — one from the start and one from the end — the loop should run for half the string's length if it's even, or half plus one if it's odd, to include the middle character if needed.

Scala has an elegant solution to this: (length + 1) / 2 handles both even and odd lengths appropriately.

Here's our function so far:

def solution(inputString: String): String = {
    val result = new StringBuilder
    val length = inputString.length
    for (i <- 0 until (length + 1) / 2) {
        // Loop implementation in next step
    }
Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal