如:原题要求将ilovebaofeng的后7个字符移到前面得出baofengilove。
要求时间复杂度O(n),空间复杂度O(1)。
初看此题,觉得对位交换一下就可,最多是头上比后面短的情况需要递归,于是也没多想就写了下面代码:
/*************************************************************
* file:move_part_of_string_to_head.c
* brief:switch part of string to the beginning of the string
* yejing@2015.1.19 1.0 creat
*************************************************************/
#include <stdio.h>
#include <string.h>
int m = 7;
#define min(x, y) (x) < (y)? (x) : (y)
void swap(char* x, char* y){
if(!x || !y)
return;
char tmp;
tmp = *x;
*x = *y;
*y = tmp;
return;
}
void switch_string_by_index(int from_index, int to_index, int len, char* pstring){
if(from_index < 0 || to_index < 0 || len <= 0 || !pstring)
return;
while(len){
swap(&pstring[from_index++], &pstring[to_index++]);
--len;
}