1.2011.8.15微软实习电面
(1)把一个字符串中的所有abc替换为a。要求时间复杂度O(n)。
#include <stdlib.h>
#include <string.h>
int main()
{
char a[] = "ddabc7abcabcccc";//不能是char *p=“ddabc7abcabcccc”
char *p=a;
char *pflag=NULL;//记录当前p只要的内容要移动到的位置
printf("%d\n",strlen(a));
printf("%d\n",sizeof(a));
printf("%c\n",*(p+12));
while(*p != '\0')
{
if(*p=='a'&& *(p+1)=='b'&& *(p+2) =='c')
{
if(!pflag)
{
pflag = p+1;
}
else
{
*pflag='a';
}
p = p+3;
}
else
{
if(pflag)
{
*pflag=*p;
p++;
pflag++;
}
else
{
p++;
}
}
}
*pflag='\0';//最后字符串一定要加字符串结束符'\0'
printf("%s\n",a);
system("PAUSE");
}
注:开始定义字符串是要使用char a[]而不是char *a。因为若char *a指向常量字符串,则不能对字符串进行修改。
详细解释见:http://blog.sina.com.cn/s/blog_707a4cbf0100rxut.html和http://blog.youkuaiyun.com/cqcmdwym/article/details/1335614
(2)如何测试网页搜索
这个就要考察自己的思考和表达能力了。
比如关键字匹配,搜索内容的排序,还有中英文问题等。这里有个测试搜索引擎的http://blog.sina.com.cn/s/blog_5d7ae9750100bf6g.html
本文解答了编程面试中的两个问题:如何用O(n)时间复杂度替换字符串中的特定子串,以及如何测试网页搜索引擎的功能,包括关键字匹配、搜索排序和中英文处理。
4万+

被折叠的 条评论
为什么被折叠?



