📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
回复: 8
跳转到指定楼层
上一主题 下一主题
收起左侧

请教一道没见过的Facebook电面题

全局:

2018(1-3月) 码农类General 本科 全职@meta - 网上海投 - 技术电面  | | Other | 在职跳槽

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

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

x
给你一个array of strings,要求按顺序在
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
thon3磕磕碰碰写下来的code,发现好多edge case要处理。。有没有大神会更好的写法?
  1. <div style="color: rgb(248, 248, 242); background-color: rgb(39, 40, 34); font-family: Monaco; font-size: 13px; line-height: 20px; white-space: pre;"><div><span style="color: #66d9ef;font-style: italic;">def</span> <span style="color: #a6e22e;">assign_words</span>(<span style="color: #fd971f;font-style: italic;">grid</span>, <span style="color: #fd971f;font-style: italic;">words</span>):</div><div>    i <span style="color: #f92672;">=</span> <span style="color: #ae81ff;">0</span></div><div>    <span style="color: #f92672;">for</span> row <span style="color: #f92672;">in</span> <span style="color: #66d9ef;">range</span>(<span style="color: #66d9ef;">len</span>(grid)):</div><div>        <span style="color: #f92672;">for</span> col <span style="color: #f92672;">in</span> <span style="color: #66d9ef;">range</span>(<span style="color: #66d9ef;">len</span>(grid[row])):</div><div>            grid[row][col] <span style="color: #f92672;">=</span> words[i]</div><div>            i <span style="color: #f92672;">+=</span> <span style="color: #ae81ff;">1</span></div><div>            <span style="color: #f92672;">if</span> i <span style="color: #f92672;">==</span> <span style="color: #66d9ef;">len</span>(words):</div><div>                <span style="color: #f92672;">return</span></div>

  2. <div><span style="color: #66d9ef;font-style: italic;">def</span> <span style="color: #a6e22e;">print_words</span>(<span style="color: #fd971f;font-style: italic;">words</span>):</div><div>  word_count <span style="color: rgb(249, 38, 114);">=</span> <span style="color: rgb(102, 217, 239);">len</span>(words)</div><div>  rows <span style="color: #f92672;">=</span> word_count <span style="color: #f92672;">//</span> <span style="color: #ae81ff;">3</span></div><div>  extra_columns <span style="color: #f92672;">=</span> word_count <span style="color: #f92672;">%</span> <span style="color: #ae81ff;">3</span></div>
  3. <div>  grid <span style="color: #f92672;">=</span> [[<span style="color: #e6db74;">''</span>] <span style="color: #f92672;">*</span> <span style="color: #ae81ff;">3</span> <span style="color: #f92672;">for</span> _ <span style="color: #f92672;">in</span> <span style="color: #66d9ef;">range</span>(rows)]</div>
  4. <div>  <span style="color: #75715e;"># special case</span></div><div>  <span style="color: #f92672;">if</span> word_count <span style="color: #f92672;"><=</span> <span style="color: #ae81ff;">3</span>:</div><div>    grid.append([<span style="color: #e6db74;">''</span>]<span style="color: #f92672;">*</span><span style="color: #ae81ff;">3</span>)</div><div>    assign_words(grid, words)</div><div>    <span style="color: #f92672;">for</span> row <span style="color: #f92672;">in</span> grid:</div><div>        <span style="color: #66d9ef;">print</span> (<span style="color: #e6db74;">' '</span>.join(row))</div><div>    <span style="color: #f92672;">return</span></div><div>    </div><div>  <span style="color: #f92672;">if</span> extra_columns <span style="color: #f92672;">==</span> <span style="color: #ae81ff;">1</span>:</div><div>      <span style="color: #f92672;">if</span> rows <span style="color: #f92672;">></span> <span style="color: #ae81ff;">2</span>:</div><div>          grid[<span style="color: #ae81ff;">0</span>].append(<span style="color: #e6db74;">''</span>)</div><div>      <span style="color: #f92672;">elif</span> rows <span style="color: #f92672;">==</span> <span style="color: #ae81ff;">2</span>:</div><div>          grid[<span style="color: #ae81ff;">1</span>].pop()</div><div>          grid.append([<span style="color: #e6db74;">''</span>]<span style="color: #f92672;">*</span><span style="color: #ae81ff;">3</span>)</div><div>  <span style="color: #f92672;">elif</span> extra_columns <span style="color: #f92672;">==</span> <span style="color: #ae81ff;">2</span>:</div><div>      <span style="color: #f92672;">if</span> rows <span style="color: #f92672;">></span> <span style="color: #ae81ff;">2</span>:</div><div>          grid[<span style="color: #ae81ff;">0</span>].append(<span style="color: #e6db74;">''</span>)</div><div>          grid[<span style="color: #ae81ff;">1</span>].append(<span style="color: #e6db74;">''</span>)</div><div>      <span style="color: #f92672;">else</span>:</div><div>          grid.append([<span style="color: #e6db74;">''</span>]<span style="color: #f92672;">*</span><span style="color: #ae81ff;">3</span>)</div><div>  </div><div>  assign_words(grid, words)</div>
  5. <div>  <span style="color: #75715e;"># special case</span></div><div>  <span style="color: #f92672;">if</span> <span style="color: #ae81ff;">3</span> <span style="color: #f92672;"><</span> word_count <span style="color: #f92672;"><</span> <span style="color: #ae81ff;">6</span>:</div><div>      <span style="color: #66d9ef;">print</span> (grid[<span style="color: #ae81ff;">0</span>][<span style="color: #ae81ff;">0</span>]<span style="color: #f92672;">+</span> <span style="color: #e6db74;">' '</span><span style="color: #f92672;">+</span>grid[<span style="color: #ae81ff;">0</span>][<span style="color: #ae81ff;">2</span>]<span style="color: #f92672;">+</span><span style="color: #e6db74;">' '</span><span style="color: #f92672;">+</span>grid[<span style="color: #ae81ff;">1</span>][<span style="color: #ae81ff;">1</span>])</div><div>      <span style="color: #66d9ef;">print</span> (grid[<span style="color: #ae81ff;">0</span>][<span style="color: #ae81ff;">1</span>]<span style="color: #f92672;">+</span> <span style="color: #e6db74;">' '</span><span style="color: #f92672;">+</span>grid[<span style="color: #ae81ff;">1</span>][<span style="color: #ae81ff;">0</span>]<span style="color: #f92672;">+</span><span style="color: #e6db74;">' '</span><span style="color: #f92672;">+</span>grid[<span style="color: #ae81ff;">1</span>][<span style="color: #ae81ff;">2</span>])</div><div>      <span style="color: #f92672;">return</span></div>
  6. <div>  <span style="color: #75715e;"># print grid</span></div><div>  <span style="color: #f92672;">for</span> col <span style="color: #f92672;">in</span> <span style="color: #66d9ef;">range</span>(<span style="color: #66d9ef;">len</span>(grid[<span style="color: #ae81ff;">0</span>])):</div><div>      <span style="color: #f92672;">for</span> row <span style="color: #f92672;">in</span> <span style="color: #66d9ef;">range</span>(<span style="color: #66d9ef;">len</span>(grid)):</div><div>          <span style="color: #f92672;">if</span> col <span style="color: #f92672;">==</span> <span style="color: #66d9ef;">len</span>(grid[row]):</div><div>              <span style="color: #f92672;">break</span></div><div>          <span style="color: #66d9ef;">print</span> (grid[row][col], <span style="color: #fd971f;font-style: italic;">end</span><span style="color: #f92672;">=</span><span style="color: #e6db74;">' '</span>)</div><div>      <span style="color: #66d9ef;">print</span> ()</div></div>
复制代码

上一篇:[面试经验] Uber 技术电面
下一篇:Google OA 第2题 找blossom group latest day
🔗
 楼主| Eyesbears 2018-2-26 09:17:20 | 只看该作者
全局:
  1. def assign_words(grid, words):
  2.     i = 0
  3.     for row in range(len(grid)):
  4.         for col in range(len(grid[row])):
  5.             grid[row][col] = words[i]
  6.             i += 1
  7.             if i == len(words):
  8.                 return


  9. def print_words(input):
  10.   words = sorted(input.split())
  11.   word_count = len(words)
  12.   rows = word_count // 3
  13.   extra_columns = word_count % 3

  14.   grid = [[''] * 3 for _ in range(rows)]

  15.   # special case
  16.   if word_count <= 3:
  17.     grid.append(['']*3)
  18.     assign_words(grid, words)
  19.     for row in grid:
  20.         print (' '.join(row))
  21.     return
  22.    
  23.   if extra_columns == 1:
  24.       if rows > 2:
  25.           grid[0].append('')
  26.       elif rows == 2:
  27.           grid[1].pop()
  28.           grid.append(['']*3)
  29.   elif extra_columns == 2:
  30.       if rows > 2:
  31.           grid[0].append('')
  32.           grid[1].append('')
  33.       else:
  34.           grid.append(['']*3)
  35.   
  36.   assign_words(grid, words)

  37.   # special case
  38.   if 3 < word_count < 6:
  39.       print (grid[0][0]+ ' '+grid[0][2]+' '+grid[1][1])
  40.       print (grid[0][1]+ ' '+grid[1][0]+' '+grid[1][2])
  41.       return

  42.   # print grid
  43.   for col in range(len(grid[0])):
  44.       for row in range(len(grid)):
  45.           if col == len(grid[row]):
  46.               break
  47.           print (grid[row][col], end=' ')
  48.       print ()
复制代码

代码炸了
回复

使用道具 举报

🔗
oio14644 2018-2-26 12:35:51 | 只看该作者
全局:
有哪些edge case,求给几个例子?
回复

使用道具 举报

🔗
 楼主| Eyesbears 2018-2-26 12:42:32 | 只看该作者
全局:
oio14644 发表于 2018-2-26 12:35
有哪些edge case,求给几个例子?

我的code在array length <= 3, 3 < array length < 6, array length > 6的3种情况得分开来算。
回复

使用道具 举报

🔗
 楼主| Eyesbears 2018-2-27 01:03:06 | 只看该作者
全局:
  1.    
  2. def print_words(words):
  3.         columns, dangling = divmod(len(words), 3)
  4.         iterator = iter(words)
  5.         columns = [take(columns + (dangling > i), iterator) for i in range(3)]
  6.         for row in itertools.zip_longest(*columns, fillvalue=''):
  7.             print('{}  {}  {}'.format(*row))
复制代码

stack exchange上某大神的solution。
回复

使用道具 举报

🔗
chishui 2018-3-21 14:49:52 | 只看该作者
全局:
  1.     void print_3column(string str) {
  2.         int N = str.size();
  3.         int ave = N / 3;
  4.         int ext = N % 3;
  5.         int total = 0;
  6.         for (int row = 0; row < ave + (ext ? 1 : 0); ++row) {
  7.             for (int i = 0; i < 3 && total < N; ++i) {
  8.                 int index = i * ave + min(i, ext) + row;
  9.                 cout<<str[index]<<" ";
  10.                 ++total;
  11.             }
  12.             cout<<endl;
  13.         }
  14.     }
复制代码
回复

使用道具 举报

🔗
nano 2018-3-21 18:39:11 | 只看该作者
全局:
想了下不用模的解法。题目很简单,高效的code感觉不是那么容易写的
  1. // Example program
  2. #include <iostream>
  3. #include <string>

  4. using namespace std;
  5. void print_Ncolumns(string str, int N=3){
  6.     int j=0;
  7.     for(int i=0;i<str.size();++i,++j){
  8.         j = (j==N?0:j);
  9.         cout<<str[i];
  10.         if(j == N-1)
  11.             cout<<endl;
  12.         else
  13.             cout<<" ";
  14.     }
  15.    
  16.     if(j!=N)
  17.     cout<<endl;
  18. }

  19. int main()
  20. {
  21.     print_Ncolumns("");
  22.     print_Ncolumns("abcdefg");
  23.     print_Ncolumns("abs");
  24.     print_Ncolumns("ab");
  25.     print_Ncolumns("abcd");
  26. }
复制代码
回复

使用道具 举报

🔗
codershunshun 2018-3-26 06:36:10 | 只看该作者
全局:
  1. def print_chars(chars)
  2.   return if chars.nil? || chars.empty?

  3.   ave = chars.length / 3
  4.   remainder = chars.length % 3
  5.   row = ave + (remainder.zero? ? 0 : 1)
  6.   col = 3
  7.   
  8.   (0...row).each do |i|
  9.     delta = remainder > 0 ? 1 : 0
  10.     col = remainder if i == row - 1 && remainder != 0

  11.     (0...col).each do |j|
  12.       index = i + ave * j + (j > 0 ? delta : 0)
  13.       delta += 1 if j > 0 && remainder == col - 1 && delta != 0
  14.       print chars[index]
  15.     end
  16.     puts ''
  17.   end
  18. end


  19. print_chars(['a','b','c','d','e','f','g', 'i'])
复制代码
回复

使用道具 举报

🔗
zqyzdsjdy 2018-9-16 08:37:47 | 只看该作者
全局:
这个是原题吧        
Text Justification
回复

使用道具 举报

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

本版积分规则

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