专栏首页BFE.dev前端刷题日记BFE.dev前端刷题#9. 解密消息 (Facebook面试题)
原创

BFE.dev前端刷题#9. 解密消息 (Facebook面试题)

bfe.dev 是一个针对前端的刷题网站,像是前端的LeetCode。该系列文章是我在上面的刷题日记。

题目9

BFE.dev#32 9. 解密消息

在一个字符串的二维数组中,有一个隐藏字符串。

I B C A L K A
D R F C A E A
G H O E L A D 

可以按照如下步骤找出隐藏消息

  1. 从左上开始,向右下前进
  2. 无法前进的时候,向右上前进
  3. 无法前进的时候,向右下前进
  4. 2和3的重复

无法前进的时候,经过的字符就就是隐藏信息。比如上面的二维数组的话,隐藏消息是IROCLED

注:如果没有的话,返回空字符串

分析

前进的时候实际上只有Y轴的方向会交替改变,我们可以用一个flag来表示其方向。

通过记录当前位置x, y,我们可以得到下一个未知x + 1, y + 1 或者 x + 1, y - 1

当遇到边界的时候,改变Y轴的方向,直到最后的元素被取到,就返回结果。

代码开始

代码实际上比较简单,就是上述分析的实现,不再赘述了。

/**
 * @param { string[][] } message
 * @returns { string }
 */
function decode(message) {
  // edge case
  const rows = message.length
  if (rows === 0) return ''
  const cols = message[0].length
  if (cols === 0) return ''
  
  let result = ''
  let i = 0
  let j = 0
  
  // keep track of the direction vertically
  let directionY = 1
  
  while (j < cols) {
    result += message[i][j]
    
    // switch direction at the border
    if (i === rows - 1) {
      directionY = -1
    }
    if (i === 0) {
      directionY = 1
    }
    
    i += directionY
    j += 1
  }
  
  return result
}

同时我把代码也放在了这里

通过,撒花!

如果你感兴趣,可以在 BFE.dev 上试试 https://bigfrontend.dev/zh/problem/decode-message

希望能有所帮助,下次再见! 前端刷题!走起!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 年收200万+的Facebook前端工程师(E5)都要求些啥能力?

    www.levels.fyi 上可以看到硅谷公司的收入统计,比如Facebook E5的平均收入为37万刀,人民币250万左右。

    JSer
  • 如何检测JavaScript中的死循环?

    如果我们需要执行用户写的代码,如和避免死循环?我们最近遇到了这个问题,因为写错代码很常见,所以我们进行了一下尝试。

    JSer
  • BFE.dev前端刷题#107. 找到最大的差

    上面的代码显示找到了max,然后再找到min,实际上我们可以合并两次循环为一次,只需要记住当前最大和最小的数即可。

    JSer
  • vue3.0仿layer.js弹窗|vue3对话框组件

    昨天有给大家分享一个vue3.0 mobile端弹框组件v3popup,今天再来分享一个最新开发的vue3.0 pc桌面版弹窗组件v3layer。功能效果有些类...

    andy2018
  • 独家 | 一文读懂R中的探索性数据分析(附R代码)

    探索性数据分析(EDA)是数据项目的第一步。我们将创建一个代码模板来实现这一功能。

    数据派THU
  • [推荐]php编码规范

    蛋未明
  • Android开发(31)处理缩略图和解决getWidth为0

    在开发时,需要显示显示图片的缩略图。使用 ThumbnailUtils.extractThumbnail 可以构建缩略图。 但是这个方法需要指定ImageVi...

    zhangyunfeiVir
  • RTSP协议视频流媒体智能分析平台EasyNVR接入EasyNVS为什么以域名访问会报错服务不存在

    关于TSINGSEE青犀视频平台的视频监控系统上,我们经常说到EasyNVR+EasyNVS的方案。客户端通过EasyNVS云管理平台上的EasyNVR列表以及...

    EasyNVR
  • VBA实用小程序59: 生成一组随机字符

    下面的一段VBA程序可以生成由一组指定个数的随机字符组成的字符串,你可以将其应用到自已的程序中来创建唯一的ID号或者安全密码。

    fanjy
  • MIT开发AI系统,确定新闻来源是否有政治偏见以打击假新闻

    虚假消息仍然是令人头疼的问题。今年3月,有一半的美国人报告在新闻网站上故意误导文章。最近爱德曼调查的大多数受访者表示,他们无法判断媒体报道的真实性。鉴于假新闻的...

    AiTechYun

扫码关注云+社区

领取腾讯云代金券