OO,拉钩上一个号称最难面试题目
来源:互联网 发布:网络型电力监测 编辑:程序博客网 时间:2024/05/22 06:06
看到了"解决拉钩上一个号称最难面试题目",随便写了个,看将来上班地点没有想去的就没传
1.裁判类
import java.util.ArrayList;import java.util.List;/** * Judge.java * @date 2014-5-7 */public class Judge { private static Integer[] baseNumber = null; private static String[] baseString = null; private static List<Rule> rules = new ArrayList<Rule>(); public static void addRules(Rule ... rs){ for (Rule r : rs) { rules.add(r); } } public static String rule(int number) { String result = Integer.toString(number); for (Rule r : rules) { String doRule = r.doRule(baseNumber, baseString, number); if (doRule != null && !"".equals(doRule)) {//裁判发现这个规则符合了 result = doRule; } } return result; } public static void setBaseNumber(Integer[] baseNumber) { Judge.baseNumber = baseNumber; } public static void setBaseString(String[] baseString) { Judge.baseString = baseString; }}
2.规则接口
/** * Rule.java * @date 2014-5-7 */public interface Rule { public String doRule(Integer[] baseNumber, String[] baseString, int number);}
3.学生
/** * Student.java * @date 2014-5-7 */public class Student { public Student(int number) { this.number = number; } private int number = 0; public void numberOff() { System.out.println(Judge.rule(number)); }}
4.程序入口
import java.util.Arrays;/** * Test.java * @date 2014-5-7 */public class Test { public static void main(String[] args) { //告诉裁判特殊数字和特殊数字所对应的字符 Judge.setBaseNumber(new Integer[] {3, 5, 7}); Judge.setBaseString(new String[] {"Fizz", "Buzz", "Whizz"}); //按照说明建了2个规则,因为规则5优先级高,所以先把放前面了,没有设定专门的规则字段 Rule[] rs = new Rule[] {new Rule() { //规则5 public String doRule(Integer[] baseNumber, String[] baseString, int number) { String numberStr = Integer.toString(number); char[] charArray = numberStr.toCharArray(); int binarySearch = -1; for (char c : charArray) { binarySearch = Arrays.binarySearch(baseNumber, Integer.valueOf(String.valueOf(c))); if (binarySearch >= 0) { break; } } if (binarySearch >= 0) { return baseString[binarySearch]; } else { return ""; } } }, new Rule() { //规则3&4 public String doRule(Integer[] baseNumber, String[] baseString, int number) { StringBuffer sb = new StringBuffer(); for (int i = 0, size = baseNumber.length; i < size; i++) { if (number % baseNumber[i].intValue() == 0) { sb.append(baseString[i]); } } return sb.toString(); } }}; //告诉裁判有2个规则 Judge.addRules(rs); //好了,同学们开始报数了。 for (int i = 1; i <= 100; i++) { Student s = new Student(i); s.numberOff(); } }}
0 0
- OO,拉钩上一个号称最难面试题目
- 一些常见面试OO design题目总结
- Not Pr0n 号称最难的在线解谜游戏
- 题目:上一个排列
- 国内最全的.net面试题目
- 最基础c++面试题目整理
- 最全的java面试题目一
- 最全的java面试题目三
- 最全的java面试题目四
- 最全的java面试题目五
- soj上一个fuckable的题目
- 号称中国最美的女人 (组图)
- 再见-号称中国最美的女人
- 分页存储过程-号称最完整
- 号称世界上最牛的vimrc
- 国内最全的.net面试题目(不断更新中)
- 国内最全的.net面试题目(转载)
- Struts原理最经典的回答面试官的题目
- servlet单实例多线程模式
- 心简单,世界就简单
- iPhone SDK 包含哪些东西?
- 在windows 8 运用sqlite开源数据库
- 习近平总书记会见宋楚瑜一行
- OO,拉钩上一个号称最难面试题目
- Union-Find 算法(并查集)
- oralce 查看表空间使用情况
- C++中assert的用法
- ORACLE的卸载
- Android 使用XML隐藏ActionBar中遇错的解决办法
- css rgba
- 生成apk文件遇到的编译问题error: format not a string literal and no format arguments
- 多动脑 然后少动手的一次经历