如何使用C语言编程C++旋转字符操作串
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍"如何使用C语言编程C++旋转字符操作串",在日常操作中,相信很多人在如何使用C语言编程C++旋转字符操作串问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2025年01月19日如何使用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安全错误
数据库的锁怎样保障安全
浙江学软件开发的学校
融媒体形势下的网络安全
新一代网络技术
国家网络安全系统公司
上海医院时间同步服务器
金蝶如何删除数据库表
网络安全龙头华为
设某工厂数据库中
浙江推广软件开发销售
高校网络安全教育图片
csr服务器证书的加密方式
联想服务器bios
海德容错服务器管理地址
船舶数据库含义
天津正规网络技术代理商
新技术的应用对网络安全的影响
文档软件开发工具官方完整版
提高网络安全有哪些主要技术
沽源县网络安全
用友数据库固定资产表代码
网络服务器的搭建
如何给普通人讲清楚网络安全防护
清理数据库服务器监听日志
邮件在服务器上默认保存多久
长岛ios软件开发公司
arcgis复制数据库失败
陕西省台式电脑服务器自动生产线
网络安全高原
网络安全方针
软件开发市场管理需要做什么