Xử lý chuỗi
Mô tả
Đội an ninh sân bay Tân Sơn Nhất cần trao đổi tin nhắn nội bộ mà không để bên ngoài đọc được. Họ sử dụng mã hóa dịch vòng Caesar cổ điển: mỗi chữ cái trong tin được dịch đi một số vị trí cố định gọi là khóa K.
Quy tắc dịch vòng:
- Chữ in hoa A-Z tạo thành vòng tròn: sau Z quay lại A, trước A lùi về Z.
- Chữ in thường a-z cũng vậy: sau z quay lại a, trước a lùi về z.
- Các ký tự khác (chữ số, dấu câu, khoảng trắng...) giữ nguyên.
- Khóa K có thể âm hoặc lớn hơn 26; chỉ lấy phần dư cho 26 để xác định độ dịch thực tế.
Nhiệm vụ của bạn: viết hàm nhận chuỗi gốc và khóa K, trả về chuỗi đã mã hóa.
Đầu vào
s: chuỗi ký tự bất kỳ (chỉ chứa chữ cái tiếng Anh, chữ số, dấu câu, khoảng trắng).k: số nguyên — khóa dịch vòng.
Đầu ra
- Trả về một chuỗi là kết quả mã hóa theo quy tắc trên.
Ràng buộc
1 ≤ độ dài s ≤ 10^5-10^9 ≤ k ≤ 10^9
Ví dụ
Ví dụ 1
- Đầu vào:
s = "Tan Son Nhat",k = 3 - Đầu ra:
"Wdq Vrq Qkdw"
Giải thích từng bước:
Tlà chữ hoa, vị trí 19 (A=0). Dịch +3 → vị trí 22 →W.alà chữ thường, vị trí 0. Dịch +3 → vị trí 3 →d.n→ vị trí 13, +3 → 16 →q.- Khoảng trắng giữ nguyên.
S→ vị trí 18, +3 → 21 →V.o→ vị trí 14, +3 → 17 →r.n→q.- Tiếp tục khoảng trắng, rồi
N→Q,h→k,a→d,t→w. - Kết quả:
Wdq Vrq Qkdw.
Ví dụ 2
- Đầu vào:
s = "CODE",k = 29 - Đầu ra:
"FRGH"
Giải thích: 29 mod 26 = 3, nên dịch +3. C→F, O→R, D→G, E→H.