Problem
1. Câu hỏi này liên quan đến suy luận về các chuỗi được tạo thành từ các chữ cái viết hoa. Bạn sẽ triển khai hai phương thức có liên quan xuất hiện trong cùng một lớp (không được hiển thị). Phương thức đầu tiên nhận một tham số chuỗi đơn và trả về một phiên bản đã xáo trộn của chuỗi đó. Phương thức thứ hai lấy một danh sách các chuỗi và sửa đổi danh sách bằng cách xáo trộn từng mục nhập trong danh sách. Bất kỳ mục nhập nào không thể xáo trộn sẽ bị xóa khỏi danh sách.
a) Viết phương thức scrambleWord, phương thức này nhận một từ đã cho và trả về một chuỗi chứa phiên bản xáo trộn của từ đó theo các quy tắc sau.
- Quá trình xáo trộn bắt đầu từ chữ cái đầu tiên của từ và tiếp tục từ trái sang phải.
- Nếu hai chữ cái liên tiếp bao gồm chữ "A" theo sau là một chữ cái không phải là "A", sau đó hai chữ cái này được đổi chỗ trong chuỗi kết quả.
- Khi các chữ cái ở hai vị trí liền kề đã được hoán đổi, cả hai vị trí đó đều không thể tham gia hoán đổi trong tương lai.
Bảng sau đây cho thấy một số ví dụ về các từ và các phiên bản xáo trộn của chúng.
từ |
Kết quả trả về bởi scrambleWord(word) |
"TAN" |
"TNA" |
"ABRACADABRA" |
"BARCADABARA" |
"Ồ ĐÓ" |
"Ồ ĐÓ" |
"AARDVARK" |
"ARADVRAK" |
"TRỨNG" |
"TRỨNG" |
"A" |
"A" |
"" |
"" |
Hoàn thành phương thức scrambleWord bên dưới.
/** Xáo trộn một từ nhất định.
* @param word từ cần xáo trộn
* @return từ đã xáo trộn (có thể bằng từ)
* Điều kiện tiên quyết: từ là một chuỗi rỗng hoặc chỉ chứa các chữ hoa.
* Hậu điều kiện: chuỗi trả về được tạo từ word như sau:
* - từ được xáo trộn, bắt đầu từ chữ cái đầu tiên và tiếp tục từ trái sang phải
* - hai chữ cái liên tiếp bao gồm "A" theo sau là một chữ cái không phải là "A" đã bị tráo đổi
* - các chữ cái được đổi chỗ nhiều nhất một lần
*/
công khai tĩnh Chuỗi scrambleWord(Chuỗi từ)
b) Viết phương thức scrambleOrRemove, thay thế mỗi từ trong tham số wordList bằng phiên bản được xáo trộn của nó và loại bỏ bất kỳ từ nào không thay đổi sau khi xáo trộn. Thứ tự tương đối của các mục nhập trong wordList vẫn giữ nguyên như trước lệnh gọi scrambleOrRemove.
Ví dụ sau đây cho thấy nội dung của wordList sẽ được sửa đổi như thế nào khi gọi scrambleOrRemove.
Trước lệnh gọi đến scramOrRemove:
Danh sách từ
0 |
1 |
2 |
3 |
4 |
"TAN" |
"ABRACADABRA" |
"WHOA" |
"APPLE" |
"TRỨNG" |
Sau lệnh gọi đến scramOrRemove:
danh sách các từ
0 |
1 |
2 |
"TAN" |
"BARCADABARA" |
"PAPLE" |