字符串翻转和左旋
问题一:将字符串“abcde”翻转成“edcba”;用start表示字符串的首地址,end表示字符串的最后一个字符的指针。
void reverse(char* start,char *end) { if(start==NULL||end==NULL) return ; while(start<end) { char temp=*start; *start=*end; *end=temp; start++; end--; } }
问题二:将字符串“I am a student.”翻转,但是每个单词内的字符顺序不变,变成“student. a am I”。
void reversesentence(char *str) { if(str==NULL) return; char *begin=str; char *end=str; while(*end!='\0') end++; end--; reverse (begin,end); end=str; while(*begin!='\0') { if(*begin==' ') { begin++; end++; } else if(*end==' '||*end=='\0') { end--; reverse(begin,end); begin=++end; } else { end++; } } }
问题三:将字符串"abcdefg"左旋2位成字符串“cdefgab”;将字符串看成是两部分,前两位为第一部分,后面剩下的字符为第二部分。先将这两部分分别翻转,再将整体进行翻转。
void leftreverse(char *str,int n) { int len=strlen(str); if(str!=NULL&&n>0&&n<len) { char *start1=str; char *end1=str+n-1; char *start2=str+n; char *end2=str+len-1; reverse(start1,end1); reverse(start2,end2); reverse(start1,end2); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步