如何使用C语言编程C++旋转字符操作串
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要介绍"如何使用C语言编程C++旋转字符操作串",在日常操作中,相信很多人在如何使用C语言编程C++旋转字符操作串问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2024年11月23日如何使用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安全错误
数据库的锁怎样保障安全
诛仙2开哪个服务器好
数据库自动重复计算
服务器CPU频率高稳定性
ec2服务器连接不上
二次文献索引型数据库有哪些
美国中机网络安全公司
秦皇岛网络技术价格
杉泰健康科技有限公司互联网医疗
主流媒体网络安全
黄浦区网络技术服务费用是多少
有没有学习网络技术的
node 快速搭建服务器
老外看中国网络安全
数据库dba权限是什么
网络安全法第61条规定的内容
网络安全大赛简讯
网络安全直接就业好还是考研好
数据库system初始密码
韩语 软件开发
关于网络安全的视频5分钟
服务器开机声音
礼仪之网络安全
音乐库数据库系统
南昌网络安全信息委员会成员
昆明水泵 天人网络技术支持
数据库转移工具
互联网企业科技创新优势
node 快速搭建服务器
静安区创新数据库服务商销售
跳过中国站点的服务器