Menu
CoddyTech

Kiểm tra phần tử có tồn tại không

Thuộc phần Logic và luồng chương trình trong hành trình C# của Coddy. Bài học 59 trên 66.

Phương thức Contains(element) kiểm tra xem một phần tử cụ thể có tồn tại trong HashSet hay không. Phương thức trả về true nếu tìm thấy phần tử đó, nếu không thì trả về false.

Tạo một HashSet trống:

HashSet<string> fruits = new HashSet<string>();

Thêm một vài phần tử vào HashSet:

fruits.Add("Apple");
fruits.Add("Banana");

Kiểm tra xem phần tử có tồn tại hay không:

bool hasApple = fruits.Contains("Apple");  // Trả về true
bool hasOrange = fruits.Contains("Orange"); // Trả về false

Bạn có thể dùng kết quả trong câu lệnh điều kiện (conditional statement):

if (fruits.Contains("Apple"))
{
    Console.WriteLine("Apple is in the set");
}
challenge icon

Thử thách

Dễ

Tạo một phương thức có tên ElementExists nhận hai đối số:

  • Một HashSet các chuỗi (set)
  • Một chuỗi (element) cần kiểm tra

Phương thức cần kiểm tra xem phần tử có tồn tại trong tập hợp hay không rồi trả về một chuỗi thông báo:

  • Nếu phần tử tồn tại, trả về "The element 'X' exists in the set"
  • Nếu phần tử không tồn tại, trả về "The element 'X' does not exist in the set"

Trong đó, 'X' là giá trị phần tử thực tế đang được kiểm tra.

Tự làm thử

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

public class Program
{
    public static string ElementExists(HashSet<string> set, string element)
    {
        // Viết code của bạn ở đây
        return "";
    }
    
    public static void Main()
    {
        // Đọc dòng đầu tiên để kiểm tra xem có ở định dạng JSON không
        string firstLine = Console.ReadLine();
        string elementToCheck = Console.ReadLine();
        HashSet<string> set = new HashSet<string>();
        
        // Kiểm tra xem đầu vào (input) có ở định dạng mảng (array) JSON không
        if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
        {
            try
            {
                // Trích xuất nội dung giữa hai dấu ngoặc vuông
                string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
                
                // Dùng regex để tìm tất cả các chuỗi (string) trong dấu ngoặc kép
                MatchCollection matches = Regex.Matches(arrayContent, @"""([^""]*)""");
                
                foreach (Match match in matches)
                {
                    // Thêm nhóm đã bắt được, không gồm dấu ngoặc kép
                    if (match.Groups.Count > 1)
                    {
                        set.Add(match.Groups[1].Value.Trim());
                    }
                }
                
                // Kiểm tra xem phần tử (element) có ở định dạng chuỗi JSON không
                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
        {
            // Xử lý đầu vào dạng truyền thống, phân tách bằng dấu phẩy
            string[] elements = firstLine.Split(',');
            foreach (string element in elements)
            {
                set.Add(element.Trim());
            }
        }
        
        string result = ElementExists(set, elementToCheck);
        Console.WriteLine(result);
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch C# online