字符串左旋问题

本文详细解析了字符串左旋算法的实现过程,通过C语言代码示例,展示了如何通过指针操作实现字符串的左旋k个字符。文章强调了数组传参推荐使用传址,并解释了函数返回值为指针类型的原因。

字符串左旋k个字符看起来毫无头绪,仔细想想也会有规律,左旋即就是先让\0右移一位,再让数组首元素放到原来\0的位置,这是左旋一位的情况,如果左旋两位的话,就在刚才的基础上再重复操作一次,数组传参推荐使用传址,函数就会定义一个指针变量指向数组首元素,另外函数的返回值也应是指针类型,返回数组首元素的下标,才能正确输出。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char  *zuo_xuan(char *arr, int k)//返回值为指针类型,故为char *
{
	char *start = arr;
	char *end = arr;//start和end均指向arr数组首元素
	while (*end != '\0')
	{
		end++;//得到\0的下标
	}
	while (k)
	{
		*(end + 1) = *end;//\0往后移一位
		*(end++) = *(start++);//把首元素移至最后
		k--;//控制左旋元素个数
	}
	return start;//返回左旋后数组首元素的下标
}
int main()
{
	char arr[] = "0";
	int m = 0;
	printf("请输入你要左旋的字符串:");
	scanf("%s", arr);
	printf("请输入你要左旋的位数:");
	scanf("%d", &m);
	printf("左旋后的字符串是:%s", zuo_xuan(arr, m));
	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值