读前福利:几百本互联网技术书籍送给大家https://mp.weixin.qq.com/s/dFqVQ2qJxvQ0YrIlPISJuw

[INFO:1-20为办公照片]
1 题目
函数:fun()
功能:移动字符串中内容
描述:移动规则如下:把第1到第m个字符,平移到字符串的最后,把m+1到最后的字符移到字符串的前部
举例:字符串原有内容为ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是DEFGHIJKABC
2 思路
为了不产生额外的空间复杂度,本次解决将一位一位移动
将数组第一个位置的元素保存到一个临时变量temp中,从第二位开始集体向左移动,最后将temp元素保存到最后一位
循环 m 次,从而达到最后的效果
3 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <stdio.h> #include <string.h> #define N 10
void fun(char *s, int m) { int temp; for (int i = 0; i < m; ++i) { temp = s[0]; for (int j = 1; j < N; ++j) { s[j-1] = s[j]; } s[N-1] = temp; } }
int main(int argc, char const *argv[]) { char s[N] = "ABCDEFGHIJ"; int m = 3; printf("移动前的字符串:%s\n", s); fun(s, m); printf("移动后的字符串:%s\n", s); }
|
示例结果:
1 2 3 4
| $ gcc ex006.c -o demo $ ./demo 移动前的字符串:ABCDEFGHIJ 移动后的字符串:DEFGHIJABC
|
最后
在这里给大家准备了几百本的互联网技术类书籍,需要的来下载吧!点击获取
有任何问题,欢迎随时交流!!!