C语言-创新互联

在以前我写过类似问题的博客,是倒置单词http://t.csdn.cn/rqhRL

创新互联建站主要从事成都网站建设、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务确山,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

目录

一、问题描述

二、分析与设计

三、代码实现


一、问题描述

实现一个函数,可以左旋字符串中的k个字符。

例如:

ABCD左旋一个字符得到BCDA

ABCD左旋两个字符得到CDAB

二、分析与设计

按照常规思路,逆序第一步就是先把第一个字符取出,然后把后边的字符向前移动,接着把第一个字符放到\0之前。然后继续进行,知道逆序完成最后一个字符,结束逆序。

但是,很显然这不算最好的方法。

更好的方法如下:

首先逆序前k个字符,然后逆序剩下的字符,最后把所有除了\0之外的字符逆序。

例如,在字符串abcdef中逆序前两个字符,那么就要先把ab逆序成ba,然后把cdef逆序成fedc,最后整体逆序成cdefab:

三、代码实现
#include 
void reverse(char* left, char* right)
{
	assert(left);
	assert(right);
	while (left< right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
void left_move(char arr[], int k)
{
	int len = strlen(arr);
	k %= len;
	//逆序左
	reverse(arr, arr + k - 1);
	//逆序右
	reverse(arr + k, arr + len - 1);
	//逆序整体
	reverse(arr, arr + len - 1);
}
int main()
{
	char arr[] = "abcdef";
	int k = 8;
	left_move(arr, k);
	printf("%s\n", arr);
	return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前文章:C语言-创新互联
转载来于:http://bzwzjz.com/article/poedg.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 营销型网站建设 移动网站建设 网站设计公司 温江网站设计 手机网站制作 成都h5网站建设 营销网站建设 高端网站设计 企业网站建设公司 成都企业网站建设 手机网站建设 手机网站制作 定制网站设计 网站设计制作 移动手机网站制作 成都网站制作 泸州网站建设 成都网站建设公司 外贸网站设计方案 重庆电商网站建设 网站制作报价 app网站建设