当前位置:网站首页>[C language] string left rotation
[C language] string left rotation
2022-07-06 06:11:00 【SouLinya】
List of articles
subject
Implement a function , You can rotate left in a string k Characters .
for example :
ABCD Turn a character left to get BCDA
ABCD Two left-handed characters get CDAB
One 、 Solution 1 : Violent solution

#include<stdio.h>
#include<string.h>
void Swap_arr(char* arr, int k)
{
int len = strlen(arr);
int i = 0;
for (i = 0; i < k; i++)
{
// Keep the first element address
char temp = *arr;
int j = 0;
// Character forward
for (j = 0; j < len - 1; j++)
{
*(arr + j) = *(arr + j + 1);
}
// Finally, assign the end character to the first element
*(arr + len - 1) = temp;
}
}
int main()
{
char arr[] = "abcdef";
int k;
scanf("%d", &k);
Swap_arr(arr, k);
printf("%s", arr);
return 0;
}
Two 、 Solution 2 : Three step flipping
Ideas :
Suppose there are two left-handed characters
1. First reverse the first two characters
bacdef
2. The last four characters in reverse order
bafedc
3. The whole in reverse order
cdefab
#include<stdio.h>
// String reverse order function
void reverse(char* left, char* right)
{
while (left < right)
{
char temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
void Swap_arr(char* arr, int k)
{
// Calculate string length
int len = strlen(arr);
// In reverse order . Pay attention to the transmitted parameters
reverse(arr, arr + k - 1);
// After reverse order
reverse(arr + k, arr + len - 1);
// The whole in reverse order
reverse(arr, arr + len - 1);
}
int main()
{
char arr[] = "abcdef";
int k;
scanf("%d", &k);
Swap_arr(arr, k);
printf("%s\n", arr);
return 0;
}
3、 ... and . Solution 3 : Splicing
Ideas : utilize strcpy String copy function and strncat String append function
ab cdef ab cdef
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
void Swap_arr(char* arr, int k)
{
assert(arr != NULL);
int len = strlen(arr);
// Subscript of off position
int pos = k % len;
// Dynamic memory opens up space :len+1 The reason is that strings and '\0' character
char* p = (char*)malloc((len+1) * sizeof(char));
if (p == NULL)
{
printf("%s\n", strerror(errno));
}
else
{
// Copy the following first cdef
strcpy(p, arr + pos);
// Copy the previous ab
strncat(p, arr, pos);
// Copy to the source string
strcpy(arr, p);
}
}
int main()
{
char arr[] = "abcdef";
int k;
scanf("%d", &k);
Swap_arr(arr, k);
printf("%s\n", arr);
return 0;
}
边栏推荐
- Novice entry SCM must understand those things
- [web security] nodejs prototype chain pollution analysis
- 对数据安全的思考(转载)
- [postman] dynamic variable (also known as mock function)
- 通过修改style设置打印页样式
- How to recover Huawei router's forgotten password
- Function of activation function
- Luogu p1460 [usaco2.1] healthy Holstein cows
- 异常检测方法总结
- 数字三角形模型 AcWing 1015. 摘花生
猜你喜欢
![[ram IP] introduction and experiment of ram IP core](/img/34/1c988456e32a8e9840d1d073caefbf.jpg)
[ram IP] introduction and experiment of ram IP core

ContentType的作用

Application of Lie group in gtsam

Manhattan distance sum - print diamond

【无App Push 通用测试方案

LeetCode 1200. 最小绝对差

Investment strategy discussion and market scale prediction report of China's solid state high power amplifier industry from 2022 to 2028

10m25dcf484c8g (FPGA) amy-6m-0002 BGA GPS module

Function of contenttype

Coordinatorlayout+nestedscrollview+recyclerview pull up the bottom display is incomplete
随机推荐
Application du Groupe Li dans gtsam
【Postman】测试(Tests)脚本编写和断言详解
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
The difference and usage between continue and break
Postman核心功能解析-参数化和测试报告
Grant Yu, build a web page you want from 0
MPLS test report
Usage of test macro of GTEST
【Postman】Collections-运行配置之导入数据文件
Buuctf-[bjdctf2020]zjctf, but so (xiaoyute detailed explanation)
Application of Lie group in gtsam
Gtest之TEST宏的用法
Leaflet map
Baidu online AI competition - image processing challenge: the 8th program of handwriting erasure
Accélération de la lecture vidéo de l'entreprise
LAN communication process in the same network segment
IP day 16 VLAN MPLS configuration
LeetCode 732. 我的日程安排表 III
Nodejs realizes the third-party login of Weibo
如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法