字符串翻转"/>
字符串翻转
经典的三次翻转:
1.先翻转字符串前n个字符;
2.再翻转后面的字符;
3.翻转整个字符串;
比如:输入字符串s="12345abc",n=5;
首先翻转前5个字符变成54321abc,然后翻转后面的字符变成54321cba,最后翻转整个字符串变成abc12345。
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <assert.h>/*经典算法*/
void reverse(char *left, char *right)//翻转整个字符串
{assert(left != NULL && right != NULL);while (left < right) {*left ^= *right;*right ^= *left;*left ^= *right;left++, right--;}
}
char *_move_steps(char *msg, int steps)
{assert(msg != NULL);int len = strlen(msg);steps = steps % len;reverse(msg, msg + steps - 1);reverse(msg + steps, msg + len - 1);reverse(msg, msg + len - 1);return msg;
}int main()
{char p[] = "12345abc";_move_steps(p, 5);printf("%s\n", p);system("pause");return 0;
}
更多推荐
字符串翻转
发布评论