Phép trừ và hiệu đối xứng
Thuộc phần Logic và luồng thực thi trong hành trình Swift của Coddy. Bài học 20 trên 56.
Hai phép toán tập hợp nữa sẽ hoàn thiện bộ công cụ.
subtracting trả về các phần tử của tập hợp thứ nhất không có trong tập hợp thứ hai:
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5]
a.subtracting(b) // {1, 2}symmetricDifference trả về các phần tử chỉ có trong một trong hai tập hợp, không bao giờ có trong cả hai:
a.symmetricDifference(b) // {1, 2, 5}Cùng với union và intersection, bốn phép toán này bao quát mọi bài toán về đại số tập hợp bạn thường gặp hằng ngày.
Việc kiểm tra một giá trị có thuộc tập hợp cũng hữu ích như một bộ lọc: kiểm tra xem một giá trị có nằm trong tập hợp trong thời gian O(1) hay không:
let stopwords: Set = ["the", "a", "an"]
let words = ["the", "cat", "sat", "on", "a", "mat"]
let real = words.filter { !stopwords.contains($0) }
// ["cat", "sat", "on", "mat"]Thử thách
DễĐọc hai dòng đầu vào, mỗi dòng là một danh sách chuỗi được phân tách bằng dấu phẩy. Lần lượt coi chúng là currentMembers và renewedMembers.
In ra ba dòng, mỗi dòng được sắp xếp theo thứ tự bảng chữ cái và nối bằng , (hoặc để trống nếu không có phần tử nào):
Lapsed: <...>> hiện tại trừ đi đã gia hạnNew: <...>> đã gia hạn trừ đi hiện tạiStayed: <...>> giao của hai tập hợp
Với đầu vào alice,bob,cara ở dòng 1 và bob,cara,dan ở dòng 2, đầu ra là:
Lapsed: alice
New: dan
Stayed: bob,caraTự làm thử
let current = Set(readLine()!.components(separatedBy: ","))
let renewed = Set(readLine()!.components(separatedBy: ","))
// TODO: in ra Lapsed (current - renewed), New (renewed - current), Stayed (giao của hai tập hợp)
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 thực thi
1Chuỗi chuyên sâu
Đếm và chỉ sốChữ hoa, chữ thường và xóa khoảng trắngTìm kiếm trong chuỗiTách và nối chuỗiThay thế chuỗi conÔn tập: Kiểm tra tên người dùng4Tập hợp
Tạo tập hợpPhép hợp và phép giaoPhép trừ và hiệu đối xứngTập con và tập hợp conÔn tập: Bộ lọc thẻ7Dự án: Theo dõi thói quen
Tổng quan dự ánĐánh dấu hoàn thành10Dự án: bộ máy trắc nghiệm
Tổng quan dự ánĐặt câu hỏiTự luyện tập: Playground Swift