May 2009 - May 2017 论坛八周年-你的足迹,我的骄傲


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 523|回复: 7
收起左侧

问一个EPIC OA 面经的问题

[复制链接] |试试Instant~ |关注本帖
老子ggyy 发表于 2015-3-15 12:35:42 | 显示全部楼层 |阅读模式

2015(4-6月) 码农类 硕士 全职@EPIC - 网上海投 - 在线笔试 |Other

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
请教大家一个问题,在EPIC 的面经里看到的
In 1-9 keypads one key is not working.
If someone enters a password then not working key will not be entered.
You have given expected password and entered password.
Check that entered password is valid or not.

Ex: entered 164, expected 18684 (you need to take care as when u enter 18684  and 164  only both will be taken as 164  input)
看到有些讨论在http://www.careercup.com/question?id=4893522998067200
试过第一个代码,似乎有问题
是不是第一个不同的digit,就一定是故障的digit,它也有可能是一个错误的digit。。。
. Waral 鍗氬鏈夋洿澶氭枃绔,
如果坏的是5,正确密码是18674,收到的是1864,或者1674,算对么?
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
peace 发表于 2015-3-15 13:38:52 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
难道不是直接 从正确的密码里去掉坏的digits然后跟用户输入的比一下看是否一样就行吗?
回复 支持 反对

使用道具 举报

 楼主| 老子ggyy 发表于 2015-3-15 16:29:43 | 显示全部楼层
关注一亩三分地微博:
Warald
peace 发表于 2015-3-15 13:38
难道不是直接 从正确的密码里去掉坏的digits然后跟用户输入的比一下看是否一样就行吗?

题目的意思应该是坏的键是哪一个是不知道的吧。
回复 支持 反对

使用道具 举报

peace 发表于 2015-3-16 04:52:59 | 显示全部楼层
老子ggyy 发表于 2015-3-15 16:29
题目的意思应该是坏的键是哪一个是不知道的吧。

果然不简单。楼主想出来了么
回复 支持 反对

使用道具 举报

EliGo 发表于 2015-3-16 08:18:11 | 显示全部楼层
两个指针遍历 expected 和 entered,代码如下,可能还能再简洁点。. visit 1point3acres.com for more.

        boolean checkPassword(String expected, String entered)
        {
                if (entered.length() > expected.length())
                        return false;

                int i = 0;. visit 1point3acres.com for more.
                int j = 0;
                int brokenDigit = -1;
                while (j < entered.length())
                {
                        if (expected.charAt(i) == entered.charAt(j)). from: 1point3acres.com/bbs
                        {
                                i++;
                                j++;
                        }
                        else
                        {. from: 1point3acres.com/bbs
                                if (brokenDigit == -1). more info on 1point3acres.com
                                        brokenDigit = (int) expected.charAt(i);
                                else
                                {
                                        if ((int) expected.charAt(i) != brokenDigit)
                                                return false;. more info on 1point3acres.com
                                }
                                i++;. Waral 鍗氬鏈夋洿澶氭枃绔,
                        }
                }
. 1point3acres.com/bbs               
                while(i<expected.length())
                {
                        if (brokenDigit == -1)
                                brokenDigit = (int) expected.charAt(i);
                        else
                        {
                                if ((int) expected.charAt(i) != brokenDigit)
                                        return false;
                        }
                        i++;
                }

                return true;
        }

补充内容 (2015-3-16 08:19):
只需要查看,不符合的数字是否都是同一个。不需要预先知道是哪个按钮坏了
回复 支持 反对

使用道具 举报

 楼主| 老子ggyy 发表于 2015-3-16 23:22:00 | 显示全部楼层
EliGo 发表于 2015-3-16 08:18
两个指针遍历 expected 和 entered,代码如下,可能还能再简洁点。

        boolean checkPassword(String expe ...

多谢答复~
有点道理。

不过就像我举的例子,
如果坏的是5,-google 1point3acres
正确密码是18674,
收到的是1864,或者1674,
也就是只有一个digit不符合,怎么算呢?
回复 支持 反对

使用道具 举报

EliGo 发表于 2015-3-17 02:19:53 | 显示全部楼层
老子ggyy 发表于 2015-3-16 23:22
多谢答复~-google 1point3acres
有点道理。

额。。是有问题。刚看你举的例子。把这题想简单了。好像必须至少知道expected里是否有故障的digit
回复 支持 反对

使用道具 举报

peace 发表于 2015-3-17 11:59:22 | 显示全部楼层
老子ggyy 发表于 2015-3-16 23:22
多谢答复~
有点道理。

如果连机器自己都不知道那个键坏了,那这两个应该都算正确的密码吧
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2017-5-23 23:21

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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