Khai báo type alias type StrFn = Box<dyn for<'a> Fn(&'a str) -> &'a str>;. Viết hàm fn apply_chain<'b>(s: &'b str, fns: &[StrFn]) -> &'b str áp dụng tuần tự mọi hàm trong slice fns lên s và trả về &str cuối cùng. Đọc một chuỗi s (không khoảng trắng), rồi xây registry gồm 3 hàm: Box::new(|t: &str| t.trim_start_matches('a')), Box::new(|t: &str| t.trim_end_matches('z')), Box::new(|t: &str| if t.len() >= 2 { &t[1..] } else { t }). In apply_chain(&s, &fns).
Một dòng chuỗi (không khoảng trắng).
1 <= |s| <= 100
Chuỗi sau khi (1) cắt mọi 'a' đầu, (2) cắt mọi 'z' cuối, (3) bỏ ký tự đầu nếu len>=2.
Ví dụ:
Đầu vào:
aaahellozzz
Đầu ra:
ello
Giải thích:
Đang tải editor...