左旋字符串
Posted 敲代码的小星星
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了左旋字符串相关的知识,希望对你有一定的参考价值。
左旋字符串左旋字符串就是将一段字符串当成一个圈,向左移动几位,同理也有右旋字符串,举个左旋字符串的例子,"abcdef"向左旋转三位结果就是"defabc",要实现这个结果,我们可以分三步解决,如下(也称三步旋转法):
1.将"abc"逆序得到"cba";
2.将"def"逆序得到"fed";
3.将"cbafed"逆序得到"defabc"。
图解如下:
首先,我们先实现一下字符串逆序函数:
void reverse(char*left, char*right)
{
assert(left != NULL);
assert(right != NULL);
while (left < right)
{
int tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
整个代码实现就是这样:
#include <stdio.h>
#include <string.h>
#include <assert.h>
void reverse(char*left, char*right)
{
assert(left != NULL);
assert(right != NULL);
while (left < right)
{
int tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
void left_move(char *s, int n)
{
assert(s);
int len = strlen(s);
reverse(s, s + n - 1);
reverse(s + n, s + len - 1);
reverse(s, s + len - 1);
}
int main()
{
char arr[] = "abcdef";
left_move(arr,3);
puts(arr);
return 0;
}
左旋字符串的讲解就暂时到这,接下来说明与之相关的几个问题。
作者每天会分享自己的C语言学习心得,欢迎大家点赞支持和指正~
以上是关于左旋字符串的主要内容,如果未能解决你的问题,请参考以下文章