当前位置:网站首页>[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;
}
边栏推荐
- Dynamic programming -- knapsack problem
- 【Postman】测试(Tests)脚本编写和断言详解
- 【Tera Term】黑猫带你学TTL脚本——嵌入式开发中串口自动化神技能
- 黑猫带你学eMMC协议第10篇:eMMC读写操作详解(read & write)
- [leetcode] day96 - the first unique character & ransom letter & letter ectopic word
- 如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法
- ICLR 2022 spotlight | analog transformer: time series anomaly detection method based on correlation difference
- 二维码的前世今生 与 六大测试点梳理
- HCIA review
- 黑猫带你学UFS协议第4篇:UFS协议栈详解
猜你喜欢
![[API interface tool] Introduction to postman interface](/img/03/c1541fca65dd726fd4bdc8793b605e.png)
[API interface tool] Introduction to postman interface

MySQL之数据类型

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

(5) Explanation of yolo-v3 core source code (3)

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

单元测试的意义

全程实现单点登录功能和请求被取消报错“cancelToken“ of undefined的解决方法

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

Sqlmap tutorial (III) practical skills II

请求转发与重定向
随机推荐
IPv6 comprehensive experiment
Web service connector: Servlet
[course notes] Compilation Principle
GTSAM中ISAM2和IncrementalFixedLagSmoother说明
曼哈顿距离和-打印菱形
Reading notes of effective managers
VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
【C语言】字符串左旋
[postman] test script writing and assertion details
[wechat applet] build a development tool environment
【LeetCode】Day96-第一个唯一字符&赎金信&字母异位词
[eolink] PC client installation
Overview of three core areas of Mathematics: geometry
[Baiwen smart home] first day of the course_ Learn Embedded and understand the development mode of bare metal and RTOS
Significance of unit testing
在线问题与离线问题
数学三大核心领域概述:几何
技术分享 | 常见接口协议解析
通过修改style设置打印页样式
Leaflet map