如何使用C语言编程C++旋转字符操作串(C++,开发技术)

时间:2024-05-06 23:15:17 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :
目录
  • 旋转字符串

    • 字符串左旋

    • 题前认知:

    • 暴力移位:

    • 三步翻转:

  • 判断字符串旋转

    • 题前认知

    • 字符串追加判断

旋转字符串

字符串左旋

实现一个函数,可以左旋字符串中的k个字符。

例如:

ABCD左旋一个字符得到BCDA

ABCD左旋两个字符得到CDAB

题前认知:

一个字符串如果就定死了。eg:char arr[]=“dfdf”什么的那多没意思,一点都没有人机交互的感觉,(虽然现在人机交互适合个体,不适合集群,但也是比死板的定死字符串舒服)

所以字符串得是我们可输入的,才有可玩性,玩的不尽性就循环

暴力移位:

#include<stdio.h>#include<string.h>char*turn_left(char*arr,intnum){ intlen=strlen(arr); inti=0; //左旋数是多少就进行几次移位 for(i=0;i<num;i++) { //每次移位就是单次左旋 intj=0; chartmp=arr[0];//每次都把首元素存起来 for(j=0;j<len-1;j++) { arr[j]=arr[j+1]; } arr[len-1]=tmp;//把存起来的首元素放到最后一位 } returnarr;}intmain(){ chararr[100]={0}; intnum=0; while(1) { printf("请输入想要旋转的字符串:>"); gets(arr); printf("请输入想要左旋数:>"); scanf("%d",&num); getchar();//这个的作用是清空缓冲区,因为每次scanf会有一个\n,不清空的话 //下一次到了gets,他会认为\n是我们打进去的,所以scanf之后必须清空缓冲区 printf("左旋字符串为:%s\n",turn_left(arr,num)); } return0;}

输出结果

如何使用C语言编程C++旋转字符操作串

三步翻转:

#include<stdio.h>#include<string.h>#include<assert.h>voidreverse(char*head,char*tail)//字符串逆序{ assert(head&&tail);//断言阻止空指针 chartmp=0; char*ptmp=&tmp; while(head<tail) { tmp=*head; *head=*tail; *tail=tmp; head++; tail--; } return0;}char*turn_left(char*arr,intnum){ assert(arr); intlen=strlen(arr); if(len) { intn=num%len;//防止num会越界操作,所以必须是num模len才可,还要保证len不为0 reverse(arr,&arr[n-1]);//逆序左边 reverse(&arr[n],&arr[len-1]);//逆序右边 reverse(arr,&arr[len-1]);//逆序整体 returnarr; } else { returnarr; }}intmain(){ chararr[100]={0}; intnum=0; while(1) { printf("请输入想要旋转的字符串:>"); gets(arr); printf("请输入想要左旋数:>"); scanf("%d",&num); getchar();//这个的作用是清空缓冲区,因为每次scanf会有一个\n,不清空的话 //下一次到了gets,他会认为\n是我们打进去的,所以scanf之后必须清空缓冲区 printf("左旋字符串为:%s\n",turn_left(arr,num)); } return0;}

如何使用C语言编程C++旋转字符操作串

如何使用C语言编程C++旋转字符操作串

还有3种方法但那三种就需要很强的数学功底了,具体的我也看不懂他怎么证明的数学公式,就不看了。哈哈哈

判断字符串旋转

写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。

例如:给定s1 =AABCD和s2 = BCDAA,返回1

给定s1=abcd和s2=ACBD,返回0.

AABCD左旋一个字符得到ABCDA

AABCD左旋两个字符得到BCDAA

AABCD右旋一个字符得到DAABC

题前认知

大家现在应该知道我干啥,没错我倡导交互,两个字符串都是我们写

字符串追加判断

(面试的时候能用库函数就用库函数)

什么叫字符串追加判断呢 例如asdfg这个字符串

如何使用C语言编程C++旋转字符操作串

#include<stdio.h>#include<string.h>#include<assert.h>intis_left_move(char*str1,char*str2){ assert(str1&&str2); intlen1=strlen(str1); intlen2=strlen(str2); //长度不同就肯定不是旋转字符串 if(len1-len2) return0; //在arr1字符串中追加一个自己 strncat(str1,str1,len1); //判断判断的那个字符串是不是追加字符串的子串 char*ret=strstr(str1,str2); if(ret==NULL) return0; else return1;}intmain(){ chararr1[50]={0};//有足够的空间 chararr2[50]={0}; while(1) { printf("请输入字符串:>"); gets(arr1); printf("请输入需判断的旋转字符串:>"); gets(arr2); intret=is_left_move(arr1,arr2); if(ret==1) { printf("是旋转字符串\n"); } else { printf("不是旋转字符串\n"); } } return0;}

结果

如何使用C语言编程C++旋转字符操作串

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:如何使用C语言编程C++旋转字符操作串的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:python函数中如何使用for循环下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18