如何使用C语言编程C++旋转字符操作串
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章主要介绍"如何使用C语言编程C++旋转字符操作串",在日常操作中,相信很多人在如何使用C语言编程C++旋转字符操作串问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2024年11月11日如何使用C语言编程C++旋转字符操作串
这篇文章主要介绍"如何使用C语言编程C++旋转字符操作串",在日常操作中,相信很多人在如何使用C语言编程C++旋转字符操作串问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用C语言编程C++旋转字符操作串"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
目录
旋转字符串
字符串左旋
题前认知:
暴力移位:
三步翻转:
判断字符串旋转
题前认知
字符串追加判断
旋转字符串
字符串左旋
实现一个函数,可以左旋字符串中的k个字符。
例如:
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
题前认知:
一个字符串如果就定死了。eg:char arr[]="dfdf"什么的那多没意思,一点都没有人机交互的感觉,(虽然现在人机交互适合个体,不适合集群,但也是比死板的定死字符串舒服)
所以字符串得是我们可输入的,才有可玩性,玩的不尽性就循环
暴力移位:
#include#include char* turn_left(char* arr, int num){ int len = strlen(arr); int i = 0; //左旋数是多少就进行几次移位 for (i = 0; i < num; i++) { //每次移位就是单次左旋 int j = 0; char tmp = arr[0];//每次都把首元素存起来 for (j = 0; j < len-1; j++) { arr[j] = arr[j + 1]; } arr[len-1] = tmp;//把存起来的首元素放到最后一位 } return arr;}int main(){ char arr[100] = {0}; int num = 0; while (1) { printf("请输入想要旋转的字符串:>"); gets(arr); printf("请输入想要左旋数:>"); scanf("%d", &num); getchar();//这个的作用是清空缓冲区,因为每次scanf会有一个\n,不清空的话 //下一次到了gets,他会认为\n是我们打进去的,所以scanf之后必须清空缓冲区 printf("左旋字符串为:%s\n", turn_left(arr, num)); } return 0;}
输出结果
三步翻转:
#include#include #include void reverse(char* head, char* tail) //字符串逆序{ assert(head && tail);//断言阻止空指针 char tmp = 0; char* ptmp = &tmp; while (head "); gets(arr); printf("请输入想要左旋数:>"); scanf("%d", &num); getchar();//这个的作用是清空缓冲区,因为每次scanf会有一个\n,不清空的话 //下一次到了gets,他会认为\n是我们打进去的,所以scanf之后必须清空缓冲区 printf("左旋字符串为:%s\n", turn_left(arr, num)); } return 0;}
还有3种方法但那三种就需要很强的数学功底了,具体的我也看不懂他怎么证明的数学公式,就不看了。哈哈哈
判断字符串旋转
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:给定s1 =AABCD和s2 = BCDAA,返回1
给定s1=abcd和s2=ACBD,返回0.
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
AABCD右旋一个字符得到DAABC
题前认知
大家现在应该知道我干啥,没错我倡导交互,两个字符串都是我们写
字符串追加判断
(面试的时候能用库函数就用库函数)
什么叫字符串追加判断呢 例如asdfg这个字符串
#include#include #include int is_left_move(char* str1, char* str2){ assert(str1 && str2); int len1 = strlen(str1); int len2 = strlen(str2); //长度不同就肯定不是旋转字符串 if (len1 - len2) return 0; //在arr1字符串中追加一个自己 strncat(str1, str1, len1); //判断判断的那个字符串是不是追加字符串的子串 char* ret = strstr(str1, str2); if (ret == NULL) return 0; else return 1;}int main(){ char arr1[50] = {0};//有足够的空间 char arr2[50] = {0}; while (1) { printf("请输入字符串:>"); gets(arr1); printf("请输入需判断的旋转字符串:>"); gets(arr2); int ret = is_left_move(arr1, arr2); if (ret == 1) { printf("是旋转字符串\n"); } else { printf("不是旋转字符串\n"); } } return 0;}
结果
到此,关于"如何使用C语言编程C++旋转字符操作串"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
字符
字符串
左旋
输入
语言
语言编程
C++
编程
函数
缓冲区
学习
缓冲
认知
两个
人机
作用
数学
方法
暴力
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发竞标需要什么资质
明日之后重新开服务器
宝石花网络技术工作室
网上买电脑怎么选择服务器
国内服务器安全资质
魔兽世界祈福服务器免费转服
超星期刊数据库官网
php循环取出数据库
荣耀10网络安全钥匙是什么
滁州服务器机箱定制
石嘴山软件开发价格表
网络安全p1p2定级
税务网络安全检查自查表
网络安全教育竞赛活动
数据库怎么导入图片
简答数据库的结构
学电脑软件开发需要什么条件
服务器防护硬件
江苏安卓软件开发哪家专业
软件开发的生命名周期包括
10万人游戏服务器光纤
简答题计算机网络安全的五个特征
c 连接数据库组件
什么是服务器的管理接口
计算机会考网络技术填空题
网络安全体系结构规划
上海英业达服务器组装
双鸭山软件开发
网络安全英文书籍
MAINTAIN翻译软件开发