当前位置:网站首页>[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;
}
边栏推荐
猜你喜欢

Application of Lie group in gtsam

Nodejs realizes the third-party login of Weibo

SQLMAP使用教程(三)实战技巧二

技术分享 | 常见接口协议解析

Wib3.0 leapfrogging, in leapfrogging (ง • ̀_•́) ง

【Postman】Collections配置运行过程

Clock in during winter vacation

【无App Push 通用测试方案
![[ram IP] introduction and experiment of ram IP core](/img/34/1c988456e32a8e9840d1d073caefbf.jpg)
[ram IP] introduction and experiment of ram IP core

H3C V7 switch configuration IRF
随机推荐
About PHP startup, mongodb cannot find the specified module
Eigen稀疏矩阵操作
技术分享 | 常见接口协议解析
Basic knowledge of error
Testing and debugging of multithreaded applications
VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
Amazon Engineer: eight important experiences I learned in my career
The usage and difference between strlen and sizeof
C language bubble sort
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
对数据安全的思考(转载)
How Huawei routers configure static routes
ICLR 2022 spotlight | analog transformer: time series anomaly detection method based on correlation difference
「 WEB测试工程师 」岗位一面总结
The latest 2022 review of "graph classification research"
Clock in during winter vacation
[postman] test script writing and assertion details
【论文代码】SML部分代码阅读
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
假设检验学习笔记