左旋字符串

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语言学习心得,欢迎大家点赞支持和指正~

 

以上是关于左旋字符串的主要内容,如果未能解决你的问题,请参考以下文章

《剑指Offer——58:左旋转字符串》代码

字符串左旋问题

字符串左旋

剑指offer—左旋转字符串

最强解析面试题:左旋转字符串

最强解析面试题:左旋转字符串