首页 > 代码库 > 左旋转字符串
左旋转字符串
题目描述:
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部,如把字符串abcdef左旋转2位得到字符串cdefab。
请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(1)。
我的思路有点简单,就是从断点开始从前往后依次将后面的字符向前移动一位,再把最后面的那个字符换成断点之前的字符
#include<stdio.h> #include<string.h> #define N 100 void leftRevolve(char *Inputstr, int n) { int slen = strlen(Inputstr); int flag = 1; int j; char c; for (int i = 1; i <= n;) { if (flag) { j = n - i; c = Inputstr[j]; } if (j < slen - i) { Inputstr[j] = Inputstr[++j]; flag = 0; } else { Inputstr[j] = c; ++i; flag = 1; } } } int main() { int n; scanf("%d", &n); char Inputstr[N]; scanf("%s", Inputstr); leftRevolve(Inputstr, n); printf("左旋转%d位后字符串变为%s\n", n, Inputstr); return 0; }
左旋转字符串
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。