Menu
Coddy logo textTech

Criando Conjuntos

Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 18 de 56.

Um Set é uma coleção não ordenada de valores únicos. Mesmo tipo de elemento para cada membro, duplicatas não são permitidas, sem ordem de iteração previsível.

var colors: Set<String> = ["red", "green", "blue", "red"]
print(colors.count)              // 3 (a duplicata "red" é descartada)

A anotação de tipo Set<String> é obrigatória na forma literal porque ["a", "b"] por si só seria inferido como um Array.

Três operações principais: contains, insert, e remove. As duas últimas retornam informações sobre se a alteração foi significativa.

colors.insert("yellow")         // adiciona
colors.insert("red")            // já está lá, sem efeito
colors.contains("green")        // true
colors.remove("blue")           // retorna "blue" ou nil se estiver ausente

Criar um conjunto a partir de um array remove duplicatas em uma única etapa:

let unique = Set([1, 2, 2, 3, 3, 3])
// 3 elementos, a ordem exata não é garantida
challenge icon

Desafio

Iniciante

Leia uma única linha de entrada: uma lista de palavras separadas por vírgula (possivelmente com duplicatas).

Imprima três linhas:

  1. O número de palavras únicas (use Set)
  2. As palavras únicas ordenadas alfabeticamente, unidas com ,
  3. true quando a entrada contiver a palavra swift, caso contrário false (use contains)

Para a entrada swift,ruby,go,swift,go,rust, a saída é:

4
go,ruby,rust,swift
true

Folha de consulta

Set – coleção não ordenada de valores únicos. A anotação de tipo é necessária ao usar a sintaxe de literal de array:

var colors: Set<String> = ["red", "green", "blue", "red"]
print(colors.count) // 3 (duplicata removida)

Operações principais:

colors.insert("yellow")      // adiciona o elemento
colors.contains("green")     // true
colors.remove("blue")        // retorna "blue" ou nil se estiver ausente

Crie um conjunto a partir de um array para remover duplicatas:

let unique = Set([1, 2, 2, 3, 3, 3]) // 3 elementos

Experimente você mesmo

let words = readLine()!.components(separatedBy: ",")

// TODO: remover duplicatas via Set, imprimir a contagem, ordenado e unido, contém "swift"
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo