字符串移位
2009-10-08 21:15 Iron 阅读(257) 评论(0) 编辑 收藏 举报思路:
对于"abcdef",如果右移两位,则先将"abcd"反向为"dcba",然后将"ef"反向为"fe",然后再最后整个字符串反向一次,变成"efabcd"
程序代码如下:
#include <cstdio> #include <cassert> #include <cstring> void Reverse(char *str, int start,int end) { assert(str!=NULL); //反序 char* strs = str+start; char* stre = str+end; for (;strs<stre;) { char temp = *strs; *strs = *stre; *stre = temp; strs++;stre--; } } void MoveRight(char *str, int n) { assert(str!=NULL); int t = n%strlen(str); //反序 Reverse(str,0,strlen(str)-t-1); Reverse(str,strlen(str)-t,strlen(str)-1); Reverse(str,0,strlen(str)-1); } int main() { char str[] = "abcdefghi"; MoveRight(str,10); printf(str); }