挑战数据结构和算法面试题——左旋转字符串

题目来源“数据结构与算法面试题80道”。在此给出我的解法,如你有更好的解法,欢迎留言。

这里写图片描述

问题分析:本题是常见的旋转字符串的问题,解决的方法是两步旋转的方法:

这里写图片描述

方法:

void do_reverse(char *p_start, char *p_end){
    if (NULL == p_start || NULL == p_end || p_start > p_end) return;
    char tmp;
    while(p_start < p_end){
        tmp = *p_start;
        *p_start = *p_end;
        *p_end = tmp;
        p_start ++;
        p_end --;
    }
}

void reverse(char *s, int len){
    if (NULL == s || len == 0) return;

    char *p1_start = s;
    char *p2_end = p1_start + strlen(s) - 1;

    char *p1_end = p1_start;
    int index = 1;
    while (index < len){
        index ++;
        p1_end ++;
    }
    char *p2_start = p1_end + 1;
    do_reverse(p1_start, p1_end);
    do_reverse(p2_start, p2_end);
    do_reverse(p1_start, p2_end);
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页