30 Days of Code - Day 6: Let's Review

Coding challenges are a great resource for learning coding techniques and improve analytical thinking, this is a collection of challenges from different platforms.

Objective

Today we’re expanding our knowledge of Strings and combining it with what we’ve already learned about loops. Check out the Tutorial tab for learning materials and an instructional video!

Task

Given a string, S, of length N that is indexed from 0 to N - 1 , print its even-indexed and odd-indexed characters as 2 space-separated strings on a single line (see the Sample below for more detail).

Note: 0 is considered to be an even index.

Input Format

The first line contains an integer, T (the number of test cases).

Each line of the i of the T subsequent lines contain a String, S.

Constraints:

  • 1 <= T <= 10
  • 2 <= length of S <= 10000

Output Format

For each String S[j] (where 0 <= j <= T-1), print S[j]’s even-indexed characters, followed by a space, followed by S[j]’s odd-indexed characters.

Sample

input00.txt
2
Hacker
Rank
output00.txt
Hce akr
Rn ak

Explanation

Test Case 0: S = "Hacker"

S[0] = "H"

S[1] = "a"

S[2] = "c"

S[3] = "k"

S[4] = "e"

S[5] = "r"

The even indices are 0, 2, and 4, and the odd indices are 1, 3, and 5. We then print a single line of 2 space-separated strings; the first string contains the ordered characters from S’s even indices (Hce), and the second string contains the ordered characters from S’s odd indices (akr).

Test Case 1: S = "Rank"

S[0] = "R"

S[1] = "a"

S[2] = "n"

S[3] = "k"

The even indices are 0 and 2, and the odd indices are 1 and 3. We then print a single line of 2 space-separated strings; the first string contains the ordered characters from S’s even indices (Rn), and the the second string contains the ordered characters from S’s odd indices (ak).

Solution

main.go
package main

import "fmt"

func main() {
  var T int
  fmt.Scan(&T)

  for i := 1; i <= T; i++ {
    var S string
    fmt.Scan(&S)

    l := len(S) / 2
    even := make([]rune, 0, l)
    odd := make([]rune, 0, l+1)

    for j, c := range S {
      if j%2 == 0 {
        even = append(even, c)
      } else {
        odd = append(odd, c)
      }
    }

    fmt.Printf("%v %v\n", string(even), string(odd))
  }
}