查看: 5039| 回复: 0
跳转到指定楼层
上一主题 下一主题
收起左侧

[找工就业] 丢盒子 codesignal 70min

全局:

2020(10-12月)-EE硕士+1-3年 | 内推|大西雅图地区 码农类General全职@dropbox

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

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

x
做OA之前在地里看了很多帖子,大概就是text editor,image replication, team collaboration这三道。很幸运地准备了text editor并且碰到了。在这里分享一下题目没有讲明的corner case(事实证明test里面没有这样的)
题目复述:. 1point3acres.com
TextEditor实现以下功能:append, backspace, undo, redo, select, bold. input长这样:String[][] input
append: 在当前字符串结尾append或将选中的字符串replace e.g. ["1", "APPEND", "hello"]
backspace: 删掉当前字符串最后一位或选中的字符串 e.g. ["2", "BACKSPACE"]
undo: 撤销上一步操作 e.g. ["3", "UNDO"] ..
redo: 把上一步被撤销的操作重做 e.g. ["4", "REDO"]
select: 选中当前字符串的某一部分, 给定了[start, end)  e.g. ["5", "SELECT", 3, 6]
bold: 将选中的字符串bold e.g. ["6", "BOLD"]

题目要注意的点和corner case:
0. 操作顺序应该按照linux timestamp排序,也就是每个array的第一个element。
1. backspace 如果已经没有字符串可以删了,这就是一个无效操作, ignore即可。
2. undo 如果已经没有操作可以撤销了,就是一个无效操作, ignore。-baidu 1point3acres
3. redo 如果已经没有操作可以重做了(#redo > #undo),ignore。注意redo只能接在undo/redo后面。. 1point3acres.com
4. select 如果操作的end超过了当前字符串的末尾,就选到末尾。如果有连续多个select,只有最后一个有效。如果start出界了,整个操作ignore。. ----

我想到的但题目没有clarify清楚的:
1. select start >= end?我当做ignore处理了
2. bold 前面没有select? 当做ignore处理了
这样处理完最后所有test case都跑过了

实现undo/redo的思路是,用一个stack存所有被undo的operation,后面遇到redo就从栈中取出。注意每遇到非undo/redo操作的时候要清空栈。

希望能帮到大家呀!!!如果觉得有用麻烦加点米呀!!!想看面经无奈米不够哇!!

评分

参与人数 3大米 +6 收起 理由
liu.haonan + 2 很有用的信息!
limengze126 + 3 欢迎分享你知道的情况,会给更多积分奖励!
uiouio + 1 很有用的信息!

查看全部评分


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

本版积分规则

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