0%

C7 | 移动字符串中内容

读前福利:几百本互联网技术书籍送给大家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

/**
函数:fun()
功能:移动字符串中内容
描述:移动规则如下:把第1到第m个字符,平移到字符串的最后,把m+1到最后的字符移到字符串的前部。
举例:字符串原有内容为ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是DEFGHIJKABC
**/


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

最后

在这里给大家准备了几百本的互联网技术类书籍,需要的来下载吧!点击获取
有任何问题,欢迎随时交流!!!

------ 全文结束------