C语言实现对字符串的左旋和右旋

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

1:对字符串的左旋num个字符:

void Reverse(char *left, char *right){
	assert(left != NULL&&right != NULL);
	while (left < right){
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
void  left_remove(char *string,unsigned int num){
	while (num>strlen(string)){
		return;
	}
	Reverse(string, string + (num - 1));
	Reverse(string + num, string + (strlen(string) - 1));
	Reverse(string, string + (strlen(string) - 1));
}

2:对字符串的右旋num个字符:

void right_remove(char *string, unsigned int num){
	while (num>strlen(string)){
		return;
	}
	Reverse(string + (strlen(string) -num), string + (strlen(string) - 1));
	Reverse(string, string + (strlen(string) - num-1));
	Reverse(string, string + (strlen(string) - 1));

}

3:判断在目标字符串中是否出现源字符串(可以是经过左旋后的字符串)

int  judge1(char *string1, char *string2){
	if (strlen(string1) != strlen(string2)){
		return 0;
	}
	strncat(string1, string1, strlen(string1));
	if (strstr(string1, string2)!=NULL){
		return 1;
	}
	return 0;
}

strncat函数是将string1字符串的strlen(string1)个大小的字符拼接到string1字符串后。

华为校招算法题第一题-回忆版 前言 华为春招数字化IT应用工程师岗位,笔试是三道编程题,第一题相对比较简单,偏爱考字符串。下面是对题目的回忆。 一、描述 对于输入的字符串,从左到右扫描字符串, 如果存在由三个以上(包括三个)连续相同字符组成的字串,就将这个子串从原串中去掉,并将原串剩下的部分拼接到一起。重复上述过程,直到无法去掉任何子串。如果所有的字符都被消除输出0。 例如: 输入:abbcccbd 输出:ad 输入:abbbaa 输出:0 我采取的是一种暴力解决法。即从头到尾遍历整个字符串,如果找到三个或者三个以上连续相同的字符,就把 阅读详情

相关推荐

实测避坑:华为Atlas 300I DUO推理卡部署Qwen1.5,性能对比3090与完整配置流程

本文深度评测华为Atlas 300I DUO推理卡在部署Qwen1.5-14B大模型时的性能表现,并与RTX 3090进行对比。通过实测数据展示硬件参数、部署流程及性能优化建议,揭示国产AI加速卡在LLM推理中的独特优势与适用场景,为开发者提供完整的配置指南避坑方案。

weixin_29083475的博客 736

2018欢聚时代校招编程题 字符串连连看

题目描述 对于输入的字符串,从左到右扫描字符串,如果存在由三个以上(包括三个)连续相同字符组成的子串,就将这个子串从原串中去掉,并将原有字符串剩下的部分拼接到一起。重复上述过程,直到无法去掉任何子串 输入描述: 输入的字符串 输出描述: 最后剩下的子串 示例1 输入 AAABCCDDDCB 输出 BB 说明 这道题目有点问题,是出现三次就删除,不是三次以上。 ...

wwxy1995的博客 1773

金融领域强化学习在多资产类别动态交易执行中的应用

在金融市场中,多资产类别的交易执行面临着诸多挑战,如市场的不确定性、资产间的复杂相关性等。传统的交易策略往往难以适应动态变化的市场环境。本研究的目的在于探索如何运用强化学习技术,实现多资产类别在动态市场环境下的高效交易执行。具体范围涵盖了从强化学习的基本原理到在多资产交易场景中的实际应用,包括核心算法的实现、数学模型的构建以及项目实战等方面。本文首先介绍研究背景,包括目的、预期读者文档结构。接着阐述核心概念,包括强化学习多资产类别动态交易执行的原理及其联系。

AI 领航者的博客 615

python字符串从左到右索引_python 基础笔记二

Python 变量类型变量存储在内存中,这意味着在创建变量时会在内存中开辟一个空间,用于存放变量的标识、名称、数据。变量的赋值:1.python变量赋值不需要类型声明;2.每个变量在使用前必须赋值,变量赋值以后该变量才会被创建;3.如果变量在脚本中多次被赋值(类型不同),以最后一次赋值的数据类型为准4.用 = 来给变量赋值;5.多个变量可以同时赋值,如下所示:5.1)、a=b=c=15.2)、a,...

weixin_42099987的博客 5214

字符串连连看 (hihocoder 字符消除类似)

题目描述 对于输入的字符串,从左到右扫描字符串,如果存在由三个以上(包括三个)连续相同字符组成的子串,就将这个子串从原串中去掉,并将原有字符串剩下的部分拼接到一起。重复上述过程,直到无法去掉任何子串 输入描述: 输入的字符串 输出描述: 最后剩下的子串 示例1 输入 AAABCCDDDCB 输出 BB 题...

weixin_30918415的博客 764

c语言字母向后移位三个字符,使用C语言实现字符串左旋右旋问题

1.实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB1.暴力移位法#include #include #include void left_move(char*str, int k){int len = 0;int i = 0;while (k--){//1.把第一个保存起来char tmp = *str;//2.后面的向后移动len = ...

weixin_39932181的博客 2598

左旋字符串C语言,C语言实现字符串左旋右旋

1:对字符串左旋num个字符:void Reverse(char *left, char *right){assert(left != NULL&&right != NULL);while (left < right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}}void left_remov...

weixin_33640304的博客 202

[c语言日寄]字符串左旋右旋

在C语言中,字符串操作是一个非常重要的主题,它不仅涉及到基础的字符处理,还涉及到算法设计数据结构的运用。今天,我们通过一个有趣的题目——判断一个字符串是否为另一个字符串旋转后的字符串,来深入探讨字符串左旋右旋操作。这个问题不仅能帮助我们理解字符串的基本操作,还能锻炼我们的算法思维。接下来,我们将从题目引入、子功能介绍、注意事项、题目分析解答以及拓展应用五个方面展开讨论。

2401_83741734的博客 3580

字符串左旋右旋问题

题目:实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB定义字符串左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef 左旋转2 位得到字符串cdefab。要求时间对长度为n 的字符串操作的复杂度为O(n),辅助内存为O(1)。分析:如果不考虑时间空间复杂度的限制,最简单的方法莫过于把这道题看成是把字符串分成...

Zhengxinyu666的博客 466

字符串左旋右旋——三步旋转法移相法

字符串左旋右旋——三步旋转法移相法!(K个字符)

yx20130919的博客 2530

左旋右旋字符串中的k个字符

实现一个函数,可以右旋字符串中的k个字符 ABCD右旋一个字符得到DABC ABCD右旋两个字符得到CDAB ABCD右旋三个字符得到BCDA 代码如下: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> void reverse(char* str, int left, int ...

Dly6161的博客 293

字符串左旋右旋

#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; /*左旋*/ char *move_steps(char *msg, int steps) { int i = 0; int len = strlen(msg); steps = steps % len;...

编程故事会 238

字符串旋转问题

1.思路:将首元素先提取出来,再将剩余元素依次向前移一位,最后将提取出来的首元素放末 尾(左旋可参照此思路)2.或许有的人刚拿此题就想先从完全不一样的情况下手,但该思路不适用与此题哦。1.思路:分左旋右旋两种情况考虑,利用循环实现旋转不同位数时可能出现的结果。问:现有一个字符串,将字符串左边k个字符旋转到右边,用C语言如何实现?问:现有两个字符串,写函数判断是否一个字符串为另一个字符串旋转后所得。提示:1.这题不建议从反面考虑,因为可能结果多且杂;

2301_80001343的博客 389

test14_0113(判断左旋右旋字符)

1.实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB #define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; //1.实现一个函数,可以左旋字符串中的k个字符。 //AB...

Q_feifeiyu的博客 237

旋转字符串并判断

左旋字符串: #define _CRT_SECURE_NO_WARNINGS 1 #include #include #include #include void reverse(char *str,int left,int right) { assert(str); while(left<right) { char tmp=*(str+left);

snow_5288的博客 692

C语言字符串左旋or右旋的方法及思路

在C语言的学习过程中,字符串是我们经常会遇到的,并且对字符串的一些操作、变化、改变都是我们应该做注重的。其中我认为一个比较有特色的变化就是对字符串进行左旋或者右旋左旋如下: 一个字符串为 abcd1234 左旋两位以后应该为 cd1234ab 右旋同理: 一个字符串为 abcd1234 右旋两位以

Chenxi13 756

C语言问题大合集(调整数组前后奇偶,字符串左旋字符串右旋问题)

C语言字符串逆序

qq_74319491的博客 206

左旋右旋多少位

要历经多少位,遍历多少,第一位末尾反复交换多少次 左旋:第一位往最后一位走‘ 右旋:最后一位往第一位走

weixin_62130773的博客 92

C语言字符串左旋右旋问题

1.实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 1.暴力移位法 #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; void left_move(char*str, int k) {     int len = 0;    ...

qq_42270373的博客 367

字符串左旋右旋

函数功能: 输出字符串左旋右旋K次的结果,这里就只输出左旋。 输入两个字符串str1、str2判断str2是不是str1的旋转后的字符串 左旋: revolve左旋1次是evolver ;左旋2次是volvere;右旋即相反旋转; 思路: 左旋的实质:就是把字符串第一位(0)的字符放到最后一位(len-1),再依次向前移动一位,循环K次即可。 比较两个字符串,就是把str2str1的...

致宁的大博客! 860
上一篇: C语言查找数组中只出现一次的两个数字,其余数字均出现两次
下一篇: 利用c语言实现通讯录功能
❤️啵啵啵
博客等级 码龄8年 6粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值