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 ausenteCriar 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 é garantidaDesafio
InicianteLeia uma única linha de entrada: uma lista de palavras separadas por vírgula (possivelmente com duplicatas).
Imprima três linhas:
- O número de palavras únicas (use
Set) - As palavras únicas ordenadas alfabeticamente, unidas com
, truequando a entrada contiver a palavraswift, caso contráriofalse(usecontains)
Para a entrada swift,ruby,go,swift,go,rust, a saída é:
4
go,ruby,rust,swift
trueFolha 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 ausenteCrie um conjunto a partir de um array para remover duplicatas:
let unique = Set([1, 2, 2, 3, 3, 3]) // 3 elementosExperimente você mesmo
let words = readLine()!.components(separatedBy: ",")
// TODO: remover duplicatas via Set, imprimir a contagem, ordenado e unido, contém "swift"
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
1Strings a Fundo
Contagem e ÍndicesCase e TrimBusca em StringsDivisão e JunçãoSubstituindo SubstringsRecapitulação - Verificação de Nome de Usuário4Conjuntos
Criando ConjuntosUnião e InterseçãoSubtração e Diferença SimétricaSubconjunto e SuperconjuntoRecapitulação - Filtro de Tags7Projeto - Monitor de Hábitos
Visão Geral do ProjetoMarcar como Concluído10Projeto - Mecanismo de Quiz
Visão Geral do ProjetoFazer Perguntas2Intervalos e Strides
Fechado vs Meio-AbertoStrideMétodos de IntervaloIntervalos no SwitchRecapitulação - Grade de Calendário5Funções de Ordem Superior Parte 1
MapFilterReduceEncadeando map, filter, reduceRecapitulação - Estatísticas de Palavras