How to merge two strings based on shared suffix and prefix in Rust

1 Answer

0 votes
fn merge_on_overlap(a: &str, b: &str) -> String {
    let len_a = a.len();
    let len_b = b.len();

    let max_possible_overlap_len = len_a.min(len_b);

    let mut overlap = 0;

    for len in (1..=max_possible_overlap_len).rev() {
        if &a[len_a - len..] == &b[..len] {
            overlap = len;
            break;
        }
    }

    let mut result = String::with_capacity(len_a + len_b - overlap);
    result.push_str(a);
    result.push_str(&b[overlap..]);
    
    result
}

fn main() {
    let a = "fantasy time travel technology";
    let b = "technology extraterrestrial life";

    println!("{}", merge_on_overlap(a, b));
}



/*
run:

fantasy time travel technology extraterrestrial life

*/

 



answered Jan 24 by avibootz
...