How to check whether each substring range (L to R) from an array of substring ranges is a palindrome in Rust

1 Answer

0 votes
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

*/



 



answered 3 hours ago by avibootz

Related questions

...