一亩三分地论坛

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

一亩三分地官方iOS手机应用下载
查看: 510|回复: 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,算对么?

peace 发表于 2015-3-15 13:38:52 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
难道不是直接 从正确的密码里去掉坏的digits然后跟用户输入的比一下看是否一样就行吗?
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

        boolean checkPassword(String expected, String entered)
        {
                if (entered.length() > expected.length())
                        return false;. 1point3acres.com/bbs
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
                int i = 0;. 1point3acres.com/bbs
                int j = 0;-google 1point3acres
                int brokenDigit = -1;
                while (j < entered.length())
                {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
                        if (expected.charAt(i) == entered.charAt(j))
                        {
                                i++;
                                j++;
                        }
                        else
                        {
                                if (brokenDigit == -1).1point3acres缃
                                        brokenDigit = (int) expected.charAt(i);
                                else
                                {. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
                                        if ((int) expected.charAt(i) != brokenDigit)
                                                return false;
                                }
                                i++;.1point3acres缃
                        }
                }
               
                while(i<expected.length())
                {
                        if (brokenDigit == -1)
                                brokenDigit = (int) expected.charAt(i);
                        else-google 1point3acres
                        {
                                if ((int) expected.charAt(i) != brokenDigit)
                                        return false;
                        }
                        i++;. Waral 鍗氬鏈夋洿澶氭枃绔,
                }

                return true;-google 1point3acres
        }

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

使用道具 举报

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

        boolean checkPassword(String expe ...

多谢答复~
有点道理。

不过就像我举的例子,
如果坏的是5,
正确密码是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. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
多谢答复~
有点道理。

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

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-4-30 19:07

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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