两道C++面试题,求解!

sunnyheyun 2010-08-23 02:47:54
1 请解释内存碎片的概念。

2 请给出代码思路:
从10个字符串中找到1个特定字符串,100个呢,10000个呢?
...全文
274 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunnyheyun 2010-08-28
  • 打赏
  • 举报
回复
感谢各位回答。
yskcg 2010-08-24
  • 打赏
  • 举报
回复
觉得第二个题就是在运用数据结构书中的查找算法,关键是算法的效率问题,当是10个的时候,各种算法的效率估计差不多,但是在100,很1000的时候,就是要最终考虑的是算法的效率问题,在查找字符时,估计采用hash和红黑树的方式会比较的好。
处处留心 2010-08-24
  • 打赏
  • 举报
回复
xuexi
wjx294801971i 2010-08-23
  • 打赏
  • 举报
回复
学习哈
pro_To_Life 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qjcslgnhwayagain 的回复:]

C/C++ code
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char spectialstring[6]="hello";
cout<<spectialstring<<endl;
char tstring[10][10]={"nihao","hello","g……
[/Quote]顶你一个,我仅写的思想
qazwhl845174869 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhzxlc_06 的回复:]
内存碎片分为:内部碎片和外部碎片   
【内部碎片】 内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;  
【外部碎片】 外部碎片指的是还没有被分配出去(不属于任何进程),但由于大小太小了无法分配给申请内存空间的新进程的内存空闲区域。
[/Quote]
正解
qjcslgnhwayagain 2010-08-23
  • 打赏
  • 举报
回复
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char spectialstring[6]="hello";
cout<<spectialstring<<endl;
char tstring[10][10]={"nihao","hello","good"};
int k=0;
for(int i=0;i<3;i++)
{
for(int j=0;j<strlen(spectialstring)-1;j++)
{
if(spectialstring[j]==tstring[i][j])
{
if((tstring[i][j+1]=='\0')&&(spectialstring[j+1]=='\0'))
k=1;
}
else
{
k=0;
break;
}
}
if(k==1)
{
cout<<"the string is"<<tstring[i]<<endl;
// break;
if(k<=i)
{
break;
}
}
}
system("pause");
}

r11222 2010-08-23
  • 打赏
  • 举报
回复
第二题。
可以先排序然后二分查找

也可以用hash表

比较的时候可以先比较hash值,值相同再比较具体字符串,效率会高一点
qjcslgnhwayagain 2010-08-23
  • 打赏
  • 举报
回复
三楼的代码好像有点问题
liao05050075 2010-08-23
  • 打赏
  • 举报
回复
第二题使用字符串hash可以得到最好的效率
wind_breez 2010-08-23
  • 打赏
  • 举报
回复
第二个我觉得对字符串序列进行排序,然后以二分查找查找字符串。
pro_To_Life 2010-08-23
  • 打赏
  • 举报
回复

//spectialstring是特定字符串,tstring是全部字符串
for(i=0;i<n:i++)//n个字符串
{
for(j=0,k=0;tstring[i][j]!='\0';j++)
{
if(spectialstring[k]==tstring[j])
k++;
else
k=0;
}
if(k==rstring.length())
{
return tstring;
}
}
pro_To_Life 2010-08-23
  • 打赏
  • 举报
回复
2题,
for(i=0;i<n:i++)//n个字符串
{ for(j=0,k=0;tstring[i][j]!='\0';j++)
{
if(spectialstring[k]==tstring[j])
k++;
else
k=0;
}
if(k==rstring.length())
return tstring;
}
//spectialstring是特定字符串,tstring是全部字符串
chaoliu1024 2010-08-23
  • 打赏
  • 举报
回复
内存碎片分为:内部碎片和外部碎片   
【内部碎片】 内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;  
【外部碎片】 外部碎片指的是还没有被分配出去(不属于任何进程),但由于大小太小了无法分配给申请内存空间的新进程的内存空闲区域。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧