栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

[C语言]左旋k个字符串(不需要创建临时变量,不越界)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[C语言]左旋k个字符串(不需要创建临时变量,不越界)

例如 ABCDEFG 这样一个字符串 ,左旋3个字符,结果:DEFGABC

方法:

逆置ABC 结果:CBADEFG

再逆置 DEF结果:CBAGFED

最后整体逆置 结果:DEFGABC

代码实现:

void inversion_str(char* string, int start, int end)//逆置函数
{
	for (int i = 0; i < (((end-start)+1)/2); i++)
	{
		string[start + i] = string[end - i] + string[start + i];
		string[end - i] = string[start + i] - string[end - i];
		string[start + i] = string[start + i] - string[end - i];

	}
}
void Sinistral_k(char* string, int k)//左旋函数
{
	int str_lenth = strlen(string);
	inversion_str(string, 0, k - 1);
	inversion_str(string, k, str_lenth - 1);
	inversion_str(string, 0, str_lenth - 1);
}

测试结果:

 全部代码:

#include
#include
void inversion_str(char* string, int start, int end)//逆置函数
{
	for (int i = 0; i < (((end-start)+1)/2); i++)
	{
		string[start + i] = string[end - i] + string[start + i];
		string[end - i] = string[start + i] - string[end - i];
		string[start + i] = string[start + i] - string[end - i];

	}
}
void Sinistral_k(char* string, int k)//左旋函数
{
	int str_lenth = strlen(string);
	inversion_str(string, 0, k - 1);
	inversion_str(string, k, str_lenth - 1);
	inversion_str(string, 0, str_lenth - 1);
}
int main()
{
	char str[] ="ABCDEFG";
	printf("%sn", str);
	Sinistral_k(str, 3);
	printf("%sn", str);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982714.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号