当前位置:网站首页>[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;
}
边栏推荐
- Baidu online AI competition - image processing challenge: the 8th program of handwriting erasure
- Hongliao Technology: how to quickly improve Tiktok store
- GTSAM中李群的运用
- Accélération de la lecture vidéo de l'entreprise
- Function of activation function
- How Huawei routers configure static routes
- Coordinatorlayout+nestedscrollview+recyclerview pull up the bottom display is incomplete
- 10M25DCF484C8G(FPGA) AMY-6M-0002 BGA GPS模块
- 對數據安全的思考(轉載)
- Function of contenttype
猜你喜欢
Manhattan distance sum - print diamond
Coordinatorlayout+nestedscrollview+recyclerview pull up the bottom display is incomplete
Report on the competition status and investment decision recommendations of Guangxi hospital industry in China from 2022 to 2028
How Huawei routers configure static routes
Function of contenttype
IDEA 新UI使用
Buuctf-[[gwctf 2019] I have a database (xiaoyute detailed explanation)
SQLMAP使用教程(三)实战技巧二
[eolink] PC client installation
Usage of test macro of GTEST
随机推荐
[untitled]
[web security] nodejs prototype chain pollution analysis
[API interface tool] Introduction to postman interface
Sqlmap tutorial (III) practical skills II
技术分享 | 常见接口协议解析
Usage of test macro of GTEST
ESP32 ESP-IDF看门狗TWDT
[postman] collections - run the imported data file of the configuration
黑猫带你学UFS协议第4篇:UFS协议栈详解
Function of activation function
【无标题】
异常检测方法总结
Investment strategy discussion and market scale prediction report of China's solid state high power amplifier industry from 2022 to 2028
GTSAM中李群的运用
Nodejs realizes the third-party login of Weibo
[eolink] PC client installation
关于 PHP 启动 MongoDb 找不到指定模块问题
IDEA 新UI使用
[C language syntax] the difference between typedef struct and struct
PAT(乙级)2022年夏季考试