您的位置:首页 > 其它

微软笔试题3

2006-07-24 16:26 423 查看
把字符串S中所有子串A替换成子串B,使用自定义的strstr
#include<iostream>
using namespace std;

char* My_strstr(char *str1, const char *str2 )
{
assert(str1 != NULL && str2 != NULL);
char *p = str1;
const char *q = str2;
while(*str1 != '/0' && *str2 != '/0')
{
if(*str1 == *str2)
{
++str1;
++str2;
}
else
{
str1 = ++p;
str2 = q;
}
}
if(*str2 == '/0')
{
return p;
}
return NULL;
}

void str_A_to_B(char *str,const char *subA,const char *subB)
{
assert(str != NULL && subA != NULL && subB != NULL);
int lenA = strlen(subA);
int lenB = strlen(subB);

char *p = str;
while(p != NULL)
{
p =My_strstr(str,subA);
if(p != NULL)
{
if(lenA == lenB)
{
strncpy(p,subB,lenA);
}
else if(lenA > lenB)
{
char *ptr = p + lenA;
char *ps = p +lenB;
while(*ptr != '/0')
{
*ps++ = *ptr++;
}
strncpy(p,subB,lenB);
}
else
{
int newlen = strlen(str);
char *ptr = &str[newlen-1];
char *ps = p + lenA;

int sp = lenB-lenA;
while(ptr >= ps)
{
*(ptr+sp) = *ptr;
--ptr;
}
strncpy(p,subB,lenB);
}
}
else
{
break;
}
p = My_strstr(str+lenA,subB);
}
}
int main()
{
char str[200];
memset(str,0,200);
strcpy(str,"pqrstaaaaajkjk");
char ch = 'a';
cout<<str<<endl;

char *subA = "aa";
char *subB = "QQQQQ";

str_A_to_B(str,subA,subB);
cout<<str<<endl;
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: