首页 > 代码库 > 剑指Offer42 左旋字符串
剑指Offer42 左旋字符串
1 /************************************************************************* 2 > File Name: 42_LeftRotateString.c 3 > Author: Juntaran 4 > Mail: JuntaranMail@gmail.com 5 > Created Time: 2016年09月04日 星期日 16时31分43秒 6 ************************************************************************/ 7 8 #include <stdio.h> 9 #include <string.h>10 11 // 反转单词12 void ReverseWord(char* left, char* right)13 {14 if (left== NULL || right==NULL)15 return;16 while (left < right)17 {18 char temp = *left;19 *left = *right;20 *right = temp;21 22 left ++;23 right --;24 }25 }26 27 void LeftRotateString(char* str, int n)28 {29 if (str == NULL || n<=0)30 return str;31 32 int length = strlen(str);33 // n可能超过字符串长度34 n = n % length;35 36 // 第一部分37 char* FirstStart = str;38 char* FirstEnd = str + n - 1;39 40 // 第二部分41 char* SecondStart = str + n;42 char* SecondEnd = str + length - 1;43 44 // 先反转第一部分45 ReverseWord(FirstStart, FirstEnd);46 // 再反转第二部分47 ReverseWord(SecondStart, SecondEnd);48 // 整体反转49 ReverseWord(FirstStart, SecondEnd);50 }51 52 int main()53 {54 char str[] = "abcdefg";55 int n = 9;56 57 LeftRotateString(str, n);58 printf("%s\n", str);59 }
剑指Offer42 左旋字符串
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。