当前位置:网站首页>[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;
}
边栏推荐
- 数学三大核心领域概述:代数
- Manhattan distance and Manhattan rectangle - print back font matrix
- Eigen sparse matrix operation
- GTSAM中ISAM2和IncrementalFixedLagSmoother说明
- Leaflet map
- Title 1093: character reverse order
- [postman] test script writing and assertion details
- Report on the competition status and investment decision recommendations of Guangxi hospital industry in China from 2022 to 2028
- [ram IP] introduction and experiment of ram IP core
- Dynamic programming -- knapsack problem
猜你喜欢
PAT(乙级)2022年夏季考试
Application of Lie group in gtsam
GTSAM中李群的运用
如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法
LeetCode 732. 我的日程安排表 III
What are the test sites for tunnel engineering?
CoordinatorLayout+NestedScrollView+RecyclerView 上拉底部显示不全
[Thesis code] SML part code reading
GTSAM中李群的運用
The latest 2022 review of "graph classification research"
随机推荐
Hongliao Technology: Liu qiangdong's "heavy hand"
isam2运行流程
[wechat applet] build a development tool environment
黑猫带你学UFS协议第18篇:UFS如何配置逻辑单元(LU Management)
【Postman】测试(Tests)脚本编写和断言详解
【论文阅读】NFlowJS:基于鲁棒学习的合成负数据密集异常检测
Leaflet map
The usage and difference between strlen and sizeof
H3C S5820V2_ Upgrade method after stacking IRF2 of 5830v2 switch
IP day 16 VLAN MPLS configuration
SQLMAP使用教程(三)实战技巧二
[postman] collections configuration running process
CoordinatorLayout+NestedScrollView+RecyclerView 上拉底部显示不全
Grant Yu, build a web page you want from 0
Company video accelerated playback
Sqlmap tutorial (III) practical skills II
数学三大核心领域概述:代数
Gtest之TEST宏的用法
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
Introduction to promql of # yyds dry goods inventory # Prometheus