1
impl Solution {
2
pub fn valid_palindrome(s: String) -> bool {
3
is_valid_palindrome::<false>(s.as_bytes())
4
}
5
}
6

7
fn is_valid_palindrome<const SKIPPED: bool>(mut s: &[u8]) -> bool {
8
loop {
9
match s {
10
[b, middle @ .., e] if b == e => s = middle,
11
[_, .., _] if !SKIPPED => {
12
return 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
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0