fn is_palindrome(s: &str, left: usize, right: usize) -> bool {
let bytes = s.as_bytes();
let mut l = left;
let mut r = right;
while l < r {
if bytes[l] != bytes[r] {
return false;
}
l += 1;
r -= 1;
}
true
}
fn check_ranges_for_palindrome(s: &str, ranges: &[(usize, usize)]) {
for &(start, end) in ranges {
let substring = &s[start..=end];
let result = if is_palindrome(s, start, end) {
"Palindrome"
} else {
"Not palindrome"
};
println!("{}: {}", substring, result);
}
}
fn main() {
let s = "abcddcbeebc";
let ranges = vec![(2, 5), (5, 10), (3, 7)];
check_ranges_for_palindrome(s, &ranges);
}
/*
run:
cddc: Palindrome
cbeebc: Palindrome
ddcbe: Not palindrome
*/