[Buổi 20][Chuỗi][RDD] Bài 28: Mã hóa tin nhắn
Mã hóa tin nhắn
Bối cảnh
Bài toán được mô tả qua yêu cầu và dữ liệu dưới đây.
Yêu cầu
FullHouse Dev vừa tốt nghiệp Khoa học Máy tính ở trường đại học và đang tìm việc làm. Anh ấy đã nộp đơn cho nhiều công việc, nhưng cuối cùng quyết định chọn công việc kỹ sư phần mềm tại ShareChat. FullHouse Dev rất hào hứng với công việc mới và nhiệm vụ đầu tiên được giao cho anh ấy là triển khai tính năng mã hóa tin nhắn để đảm bảo cuộc trò chuyện riêng tư và an toàn.
FullHouse Dev có một tin nhắn, là một chuỗi S có độ dài N chỉ chứa các chữ cái tiếng Anh viết thường. Nó cần được mã hóa qua hai bước như sau:
Hoán đổi ký tự đầu tiên và thứ hai của chuỗi S, sau đó hoán đổi ký tự thứ 3 và thứ 4, rồi ký tự thứ 5 và thứ 6, và cứ tiếp tục như vậy. Nếu độ dài của S là số lẻ, ký tự cuối cùng không được hoán đổi với ký tự nào khác.
Thay thế mỗi lần xuất hiện của chữ cái 'a' trong tin nhắn thu được sau bước đầu tiên bằng chữ cái 'z', mỗi lần xuất hiện của 'b' bằng 'y', mỗi lần xuất hiện của 'c' bằng 'x', v.v., và mỗi lần xuất hiện của 'z' trong tin nhắn thu được sau bước đầu tiên bằng 'a'.
Chuỗi tạo ra ở bước thứ hai là tin nhắn đã được mã hóa. Hãy giúp FullHouse Dev tìm tin nhắn này.
Input
- Dòng đầu tiên chứa một số nguyên T là số lượng bộ test.
- Với mỗi bộ test:
- Dòng đầu tiên chứa một số nguyên N.
- Dòng thứ hai chứa chuỗi tin nhắn S.
Output
Với mỗi bộ test, in ra một dòng chứa một chuỗi - tin nhắn đã được mã hóa.
Ràng buộc
- 1 ≤ T ≤ 1,000
- 1 ≤ N ≤ 100
- |S| = N
- S chỉ chứa các chữ cái tiếng Anh viết thường
Ví dụ 1
Input
1
9
sharechat
Output
shizxvzsg
Giải thích ví dụ
Ví dụ 1: Tin nhắn gốc là "sharechat". Ở bước đầu tiên, chúng ta hoán đổi bốn cặp chữ cái (lưu ý rằng chữ cái cuối cùng không được hoán đổi), vì vậy nó trở thành "hsraceaht". Ở bước thứ hai, chúng ta thay thế chữ cái đầu tiên ('h') bằng 's', chữ cái thứ hai ('s') bằng 'h', và cứ tiếp tục như vậy, vì vậy tin nhắn đã mã hóa kết quả là "shizxvzsg".
Thông tin học tập
- Buổi: B20
- Concepts: std::string, getline, index, find, substr, basic transformations
- Giới hạn kiến thức: B01-B20
- Time limit: 2 seconds
- Memory limit: 64 MB
- Point: 20
Comments