1impl Solution {2pub fn valid_palindrome(s: String) -> bool {3is_valid_palindrome::<false>(s.as_bytes())4}5}67fn is_valid_palindrome<const SKIPPED: bool>(mut s: &[u8]) -> bool {8loop {9match s {10[b, middle @ .., e] if b == e => s = middle,11[_, .., _] if !SKIPPED => {12return is_valid_palindrome::<true>(&s[1..])13|| is_valid_palindrome::<true>(s.split_last().unwrap().1)14}15[_, .., _] if SKIPPED => return false,16_ => return true,17}18}19}