左/右移模版

// 左闭右开
fn reverse(s: &mut String, i: usize, j: usize) {
    let mut p = unsafe { s.as_bytes_mut() };
    let mut j = j - 1;
    let mut i = i;
    while i < j {
        p.swap(i, j);
        i += 1;
        j -= 1;
    }
}

//左移
fn left_rotate(s: &mut String, k: usize) {
  reverse(&mut s, 0, s.len());
  reverse(&mut s, 0, s.len() - k);
  reverse(&mut s, s.len() - k, s.len());
}

//左移
fn right_rotate(s: &mut String, k: usize) {
  reverse(&mut s, 0, s.len());
  reverse(&mut s, 0, k);
  reverse(&mut s, k, s.len());
}

posted @ 2024-06-02 20:15  TopWay2Die  阅读(23)  评论(0)    收藏  举报