刚面试回来,分享两道面试题给大家做,比较简单,怎样做最好?

zlmlczcmlvsaav 2015-07-17 05:38:15
1‘、有一个vector<string> fruits=<"apple","orrange","banana","orrange","apple".,,,,,,,,,,,,>这样的容器,叫你统计容器里每种水果的数量并输出。
实现版本1:

void furitCount(const &vector<string> fruits)
{
int applenum,orrangenum,banananum;
applenum=orrangenum=banananum=0;
vector<string>::iterator it;
for(it=fruits.begin(),it!=fruit().end(),it++){
if( (*it).compare("apple")
applenum++;
else if( (*it).compare("prrange") )
orrangenum++;
else if( (*it).compare("banana") )
banananum++;
else cout<<"error"<<endl; }
cout<<"applenum: "<<applenum<<endl;
cout<<"orrangenum: "<<orrangenum<<endl;
cout<<"banananum: "<<banananum<<endl;
} 但是感觉这个版本的实现太过平庸,没有体现任何技巧,于是实现版本2
实现版本2:
void furitCount(const &vector<string> fruits){
int applenum,orrangenum,banananum;
applenum=orrangenum=banananum=0; applenum=count(fruits.begin(),fruits.end(),"apple"); orrangenum=count(fruits.begin(),fruits.end(),"orrange"); banananum=count(fruits.begin(),fruits.end(),"banana");
}


这个版本感觉使用了一点点stl中自带算法的,看起来更简洁更高大上,但是要遍历三次才能统计完,性能太差。
各位看管能否给出你们的实现代码呢?我觉得面试官应该像看到的不是我上述两个代码吧?他应该想看到更多的技巧!!!


2、_int8 data 是一个8位的有符号整数,请将上面得到的各种水果的总数用data存储,写出存储过程和解析过程
实现代码:
存储过程:

data=applenum;
data<<2;
data+=orrangenum;
data<<2;
data+=banananum;


解析过程:

banananum=data&3;
data>>2;
orrangenum=data&3;
data>>2;
applenum=data&3;


存在问题:
每个水果的数量分配两个位只能表示最多到3,分配3个又不够,大家有更好更高效的存储方法么?
第三题有点记不住了,也没多大价值,先请各位看官看看上面两个题吧,怎么写才是最好的答案?
...全文
154 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
GKatHere 2015-07-17
  • 打赏
  • 举报
回复
第一种:

   要快速的话
     UCHAR cout['o' - 'a' +1] = {0};
     for (...) { cout [ 首字符 - 'a' ]++; };
第二种: 差不多吧, 不过数量超过 7. 7. 3我也没办法,

data= (applenum ) + (orrangenum << 2) + (banananum << 4);
banananum= (data >> 4) & 3; 
orrangenum= (data >> 2) & 3; 
applenum = data&3;
//  另外, data >> 2这样单独成一行在正式中是出错的
zlmlczcmlvsaav 2015-07-17
  • 打赏
  • 举报
回复
引用 1 楼 king191923157 的回复:
问个问题,水果只有三种吗?会不会还在考 可能有多种水果的情况
就是三个,面试的时候集合里面所有的水果都写出来了,我懒得写完,就打的省略号 。
king191923157 2015-07-17
  • 打赏
  • 举报
回复
问个问题,水果只有三种吗?会不会还在考 可能有多种水果的情况

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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