首页 > 代码库 > 字符串翻转和左旋
字符串翻转和左旋
问题一:将字符串“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); }}
字符串翻转和左旋
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。