作者在 2008-10-25 00:36:41 发布以下内容
今天去面试,给了个题:
要求把字符串 “sdjaabcasdkk;3asd,abcadapabcadp” 中的 子串“abc”使用 “zhong” 替代得到一个新的字符串
看着这个好像挺简单的,竟然花了我好长时间!!真是郁闷
#include <stdio.h>
#include <string.h>
char *source = "sadaabcadadjalabcdd";
int main()
{
char dec[100] = {0};
int i;
char *pstr = source;
char *pstr1 = dec;
printf("%s\n",source);
for (i=0;i<(signed)strlen(source);i++)
{
if (0==strncmp(pstr,"abc",3))
{
strcat(dec,"zhong");
pstr += strlen("abc");
pstr1 += strlen("zhong");
}
else
{
dec[(pstr1-dec)] = *pstr;
dec[(pstr1-dec)+1] = 0;
pstr += 1;
pstr1 += 1;
}
}
printf("%s\n",dec);
return 0;
}
上面是我的答案,希望和大家一起探讨下,由什么更加高效的算法
要求把字符串 “sdjaabcasdkk;3asd,abcadapabcadp” 中的 子串“abc”使用 “zhong” 替代得到一个新的字符串
看着这个好像挺简单的,竟然花了我好长时间!!真是郁闷
#include <stdio.h>
#include <string.h>
char *source = "sadaabcadadjalabcdd";
int main()
{
char dec[100] = {0};
int i;
char *pstr = source;
char *pstr1 = dec;
printf("%s\n",source);
for (i=0;i<(signed)strlen(source);i++)
{
if (0==strncmp(pstr,"abc",3))
{
strcat(dec,"zhong");
pstr += strlen("abc");
pstr1 += strlen("zhong");
}
else
{
dec[(pstr1-dec)] = *pstr;
dec[(pstr1-dec)+1] = 0;
pstr += 1;
pstr1 += 1;
}
}
printf("%s\n",dec);
return 0;
}
上面是我的答案,希望和大家一起探讨下,由什么更加高效的算法