一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 410|回复: 7
收起左侧

问一个EPIC OA 面经的问题

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

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

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

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。。。

如果坏的是5,正确密码是18674,收到的是1864,或者1674,算对么?
.鏈枃鍘熷垱鑷1point3acres璁哄潧
peace 发表于 2015-3-15 13:38:52 | 显示全部楼层
难道不是直接 从正确的密码里去掉坏的digits然后跟用户输入的比一下看是否一样就行吗?
回复 支持 反对

使用道具 举报

 楼主| 老子ggyy 发表于 2015-3-15 16:29:43 | 显示全部楼层
peace 发表于 2015-3-15 13:38
难道不是直接 从正确的密码里去掉坏的digits然后跟用户输入的比一下看是否一样就行吗?
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
题目的意思应该是坏的键是哪一个是不知道的吧。
回复 支持 反对

使用道具 举报

peace 发表于 2015-3-16 04:52:59 | 显示全部楼层
老子ggyy 发表于 2015-3-15 16:29
题目的意思应该是坏的键是哪一个是不知道的吧。
. visit 1point3acres.com for more.
果然不简单。楼主想出来了么
回复 支持 反对

使用道具 举报

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

        boolean checkPassword(String expected, String entered)
        {
                if (entered.length() > expected.length()).鏈枃鍘熷垱鑷1point3acres璁哄潧
                        return false;

                int i = 0;
                int j = 0;
                int brokenDigit = -1; 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
                while (j < entered.length())-google 1point3acres
                {
                        if (expected.charAt(i) == entered.charAt(j))
                        {
                                i++;
                                j++;
                        }
                        else
                        {
                                if (brokenDigit == -1)
                                        brokenDigit = (int) expected.charAt(i);
                                else
                                {
                                        if ((int) expected.charAt(i) != brokenDigit)
                                                return false;
                                }.鏈枃鍘熷垱鑷1point3acres璁哄潧
                                i++;
                        }
                }
               
                while(i<expected.length())
                {
                        if (brokenDigit == -1)
                                brokenDigit = (int) expected.charAt(i);
                        else. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
                        {
                                if ((int) expected.charAt(i) != brokenDigit). 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
                                        return false;
                        }
                        i++;
                }. Waral 鍗氬鏈夋洿澶氭枃绔,

                return true;
        }
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
补充内容 (2015-3-16 08:19):-google 1point3acres
只需要查看,不符合的数字是否都是同一个。不需要预先知道是哪个按钮坏了
回复 支持 反对

使用道具 举报

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

        boolean checkPassword(String expe ...

多谢答复~.1point3acres缃
有点道理。

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

使用道具 举报

EliGo 发表于 2015-3-17 02:19:53 | 显示全部楼层
老子ggyy 发表于 2015-3-16 23:22
多谢答复~
.鐣欏璁哄潧-涓浜-涓夊垎鍦有点道理。
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
额。。是有问题。刚看你举的例子。把这题想简单了。好像必须至少知道expected里是否有故障的digit
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

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

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

custom counter

GMT+8, 2016-12-10 09:42

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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