Comprobar si existe un elemento
Parte de la sección Lógica y Flujo del Journey de C# de Coddy. Lección 59 de 66.
El método Contains(element) comprueba si existe un elemento específico en el HashSet. Devuelve true si se encuentra el elemento y false en caso contrario.
Crea un HashSet vacío:
HashSet<string> fruits = new HashSet<string>();Añade algunos elementos al HashSet:
fruits.Add("Apple");
fruits.Add("Banana");Comprobar si un elemento existe:
bool hasApple = fruits.Contains("Apple"); // Returns true
bool hasOrange = fruits.Contains("Orange"); // Returns falsePuedes usar el resultado en sentencias condicionales:
if (fruits.Contains("Apple"))
{
Console.WriteLine("Apple is in the set");
}Desafío
FácilCrea un método llamado ElementExists que acepte dos argumentos:
- Un HashSet de cadenas (
set) - Una cadena (
element) que se debe comprobar
El método debe comprobar si el elemento existe en el conjunto y devolver un mensaje de cadena:
- Si el elemento existe, devuelve "The element 'X' exists in the set"
- Si el elemento no existe, devuelve "The element 'X' does not exist in the set"
Donde 'X' es el valor real del elemento que se está comprobando.
Pruébalo tú mismo
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public class Program
{
public static string ElementExists(HashSet<string> set, string element)
{
// Escribe tu código aquí
return "";
}
public static void Main()
{
// Lee la primera línea para verificar si es formato JSON
string firstLine = Console.ReadLine();
string elementToCheck = Console.ReadLine();
HashSet<string> set = new HashSet<string>();
// Verifica si la entrada está en formato de array JSON
if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
{
try
{
// Extrae el contenido entre corchetes cuadrados
string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
// Usa regex para hacer coincidir todas las cadenas entre comillas
MatchCollection matches = Regex.Matches(arrayContent, @"""([^""]*)""");
foreach (Match match in matches)
{
// Agrega el grupo capturado (sin comillas)
if (match.Groups.Count > 1)
{
set.Add(match.Groups[1].Value.Trim());
}
}
// Verifica si el elemento está en formato de cadena JSON
Match elementMatch = Regex.Match(elementToCheck, @"""([^""]*)""");
if (elementMatch.Success && elementMatch.Groups.Count > 1)
{
elementToCheck = elementMatch.Groups[1].Value;
}
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing JSON input: {ex.Message}");
return;
}
}
else
{
// Procesa la entrada tradicional separada por comas
string[] elements = firstLine.Split(',');
foreach (string element in elements)
{
set.Add(element.Trim());
}
}
string result = ElementExists(set, elementToCheck);
Console.WriteLine(result);
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Arrays multidimensionales
Conceptos básicos de arrays 2DDeclaración e inicialización de arrays 2DAcceso a elementos de arrays 2DBucles anidados con arrays 2DArrays irregularesOperaciones comunes con matricesRepaso: arrays multidimensionales4Técnicas de control de flujo
Retornos anticipadosCláusulas de guardaSentencias de salto (goto)Break y ContinueAplanar condicionales anidados7Operadores lógicos avanzados
Evaluación de cortocircuitoOperadores lógicos condicionalesPrecedencia de operadoresRepaso: operadores avanzados2Toma de decisiones avanzada
Múltiples condicionesLógica booleana complejaComparación entre If y SwitchSentencias Switch anidadasRepaso: decisiones avanzadas5Manejo de excepciones
Fundamentos de Try-CatchTipos de excepcionesMúltiples bloques CatchTrabajo con archivosBloque FinallyUso de Using frente a Try-FinallyExcepciones personalizadasRepaso: manejo de errores8Sistema de análisis de datos
Configuración de recopilación de datosLógica de entrada de datos11HashSet Parte 1
¿Qué es un HashSet?Agregar un elementoEliminar un elementoComprobar si existe un elementoVacío y tamañoRepaso - HashSet3Mejoras de bucles
Rendimiento de buclesIteración de estructuras complejasCada tipo de bucleRefactorización de buclesRepaso: bucles optimizados6Manejo de valores nulos
Conceptos básicos de referencias nulasTipos de valor anulablesPatrones de comprobación de valores nulosProgramación defensivaRepaso: seguridad frente a valores nulosPractica por tu cuenta: Compilador de C# online