/*==================
腾讯面试题
替换A字符串中所有出现的字串a把
其替换为b
2012-08-21 By Mei
====================*/
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
void exchange(char *src, const char *b, int len)
{
if(len>=0)
{
while(*b!=0)
*src++ = *b++;
while(*(src+len)!='\0')
*src++=*(src+len);
*src = '\0';
}
else
{
char *p = src;
int len_b = strlen(b);
while(*src!='\0')
src++;
while(src != (p+len_b+len-1))
{
*(src - len) = *src;
src--;
}
while(*b!='\0')
*p++=*b++;
}
}
char *replace(char *src, const char*a, const char *b)
{
char *p = src;
int i, j, flag;
int src_len = strlen(src);
int a_len = strlen(a);
int b_len = strlen(b);
for(i=0; i<src_len-b_len; i++)
{
flag = 0;
for(j=i;a[flag] == src[j];j++)
flag++;
if(flag == a_len)
exchange(src+i, b, a_len-b_len);
}
return p;
}
int main()
{
char src[20] ="abcdabcdabd";
printf("%s\n", src);
char *a = "abc";
const char *b = "abcd";
char *p = replace(src, a, b);
printf("%s\n", p);
return 0;
}