回复: 32
跳转到指定楼层
上一主题 下一主题
收起左侧

g 最新7月电面

全局:

2014(7-9月) 码农类General 本科 全职@google - 网上海投 - 在线笔试  | | Other |

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
g 电面

把一个list的字符串  编码成
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
了,但时间不够下一题。额

评分

参与人数 2大米 +4 收起 理由
dearsheep + 3 欢迎来介绍你知道的情况
arthur1026 + 1 很有用的信息!

查看全部评分


上一篇:g家电面
下一篇:Yelp onsite 面经

本帖被以下淘专辑推荐:

推荐
msg7086 2014-7-30 07:23:13 | 只看该作者
全局:
字符串编码的话有现成的方案。
BitTorrent规范里用到的BEncoding就是,字符串长度+冒号+字符串。
直接照着BEncoding的规范做List<String>序列化和反序列化就行了。
回复

使用道具 举报

推荐
Interviwer 2014-9-17 00:26:35 | 只看该作者
全局:
用 c++ 写了一个, 不是特别简练, 希望指正
  1. #include<iostream>
  2. #include<string>
  3. #include<vector>
  4. using namespace std;

  5. class bitTorrent {

  6. public:
  7.     vector<string> words;
  8.     string benCoding;

  9.     bitTorrent(vector<string> w) {
  10.         words = w;
  11.         benCoding = "";
  12.     }

  13.     void encoding() {
  14.         for(int i = 0; i < words.size(); i ++) {
  15.             benCoding += num2string(words[i].size()) + ":" + words[i];
  16.         }
  17.     }

  18.     vector<string> decoding() {
  19.         vector<string> rst;
  20.         int i = 0;
  21.         while( i < benCoding.size() ) {
  22.             int len = 0;
  23.             while(benCoding[i] >= '0' && benCoding[i] <= '9') {
  24.                 len = 10 * len + ( benCoding[i] - '0' );
  25.                 i ++;
  26.             }
  27.             if(benCoding[i] == ':') {
  28.                 i ++;
  29.                 string oneWord = "";
  30.                 for(int l = i; l < len+i; l ++) {
  31.                     oneWord += benCoding[l];
  32.                 }
  33.                 i += len;
  34.                 rst.push_back(oneWord);
  35.             }else {
  36.                 cout << "Error" << endl;
  37.                 exit(0);
  38.             }
  39.         }
  40.         return rst;
  41.     }
  42.    
  43.     string num2string(int num) {
  44.         string rst = "";
  45.         int base = 1;
  46.         int tmp = num;
  47.         while(tmp != 0) {
  48.             base *= 10;
  49.             tmp /= 10;
  50.         }
  51.         while(base != 1) {
  52.             rst += (num % base + '0');
  53.             base /= 10;
  54.         }
  55.         return rst;
  56.     }

  57. };


  58. int main() {

  59.     vector<string> t;
  60.     t.push_back("hello");
  61.     t.push_back("test");
  62.     t.push_back("10:10");
  63.     t.push_back(":");
  64.     t.push_back("10");


  65.     bitTorrent* test = new bitTorrent(t);
  66.     test->encoding();

  67.     cout << test->benCoding << endl;
  68.    
  69.     vector<string> out = test->decoding();   
  70.     for(int i = 0 ; i < out.size(); i ++) {
  71.         cout << out[i] << endl;
  72.     }

  73. }
复制代码
回复

使用道具 举报

推荐
jfwwlong 2014-7-20 10:55:04 | 只看该作者
全局:
我找了一下,看到一个不错的答案。就是先将每个单词里面的反斜杠'\'加倍变成连续2个'\',然后将每个每个单词里面的逗号','前面加上一个反斜杠'\'。最后在每个单词中间加上一个逗号','。得到输出的字符串。
反序列化的时候遇到第一个反斜杠就先跳过,然后加上后面的字符。这样就可以解码了。说起来不太描述,大家可以看一下这个链接里的第一个答案,然后在纸上比划比划。
http://stackoverflow.com/questions/853475/whats-the-simplest-way-to-encoding-liststring-into-plain-string-and-decode-it

回复

使用道具 举报

🔗
花农 2014-7-19 08:52:32 | 只看该作者
全局:
跟我遇到的题目完全一样,我三月份面的,听口音是白人小哥。当时我自己做出来,但也是花了很多时间,也是没时间做第二题。
回复

使用道具 举报

🔗
readman 2014-7-19 09:13:06 | 只看该作者
本楼:
全局:
给个例子?
回复

使用道具 举报

🔗
notbad 2014-7-19 09:51:38 | 只看该作者
全局:
可以chunk编码吗? |size1|string1|size2|string2|....
回复

使用道具 举报

🔗
nathanwong 2014-7-20 02:54:56 | 只看该作者
全局:
LZ 请问list的是怎么样的呀 那个list的串是啥格式呢? 能否给个详细点的描述。想做一下这个题目
回复

使用道具 举报

🔗
花农 2014-7-20 04:27:17 | 只看该作者
全局:
nathanwong 发表于 2014-7-20 02:54
LZ 请问list的是怎么样的呀 那个list的串是啥格式呢? 能否给个详细点的描述。想做一下这个题目

String encode(List<String> strings){

}

List<String> decode(String s){

}

加密解密的方法自己决定,但要保证对包含所有类型的字符的String都能成功加密解密。
回复

使用道具 举报

🔗
lvluolan 2014-7-20 14:38:44 | 只看该作者
全局:
jfwwlong 发表于 2014-7-20 10:55
我找了一下,看到一个不错的答案。就是先将每个单词里面的反斜杠'\'加倍变成连续2个'\',然后将每个每个单 ...

这个方法确实不错,暂时还没找出bug,谢谢^_^
回复

使用道具 举报

🔗
joy9088 2014-7-26 04:22:42 | 只看该作者
全局:
也就是说用"\"作为转义字符
回复

使用道具 举报

🔗
 楼主| zhaogongzuo 2014-7-30 05:57:16 | 只看该作者
全局:
花农 发表于 2014-7-19 08:52
跟我遇到的题目完全一样,我三月份面的,听口音是白人小哥。当时我自己做出来,但也是花了很多时间,也是没 ...

g让我再phone screen一次
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表