您的位置:首页 > 职场人生

一道淘汰85%面试者的百度开发人员面试题

2014-07-27 21:54 239 查看
这个是题目网址:http://student.csdn.net/mcd/topic/235300/753730

注意:

加上了9L@jetvster的代码,非常奇妙,第一眼看以为还不怎么样,结果挺牛的

感觉7L@SeeMore91,8L哥们的思路挺好的,学习一下下


刚才看到3L的回复,在此声明,以下的仅仅是我自己的代码与思路,请不要以为这是解说,仅仅是上个代码请看一下而已,放上来为的求个指导&指点

另外,输出语句仅仅是为了測试结果的,请无视!假设须要全然满足题意,将代码第26行改动为: System.out.println(txt); 再在switch加上default部分,语句就一个continue,直接放弃本轮运行下一次循环

本来一看感觉非常easy,可是写了一会儿之后越来越感觉不是那么简单,

,于是我就充分利用咱们Java面向对象的特性,写完了。

上代码(感觉差点儿相同是这样了,有错漏的地方还希望前辈们指正一下



PS:刚查了下百科,原来正整数是大于0的整数,所以,代码改一下

/**
* 依序遍历0到100闭区间内全部的正整数,
* 假设该数字能被3整除,则输出该数字及‘*’标记;
* 假设该数字能被5整除,则输出该数字及‘#’标记;
* 假设该数字既能被3整除又能被5整除,则输出该数字及‘*#’标记。
*/
public class Print {
public static void main(String[] args){
new Print().prints();
}
private void prints(){
for(int i = 1;i <= 100;i++){
String txt = "";
int flag = 0;
if (op3(i)){
flag += 1;
}
if (op5(i)){
flag += 2;
}
switch (flag){
case 1:txt = "*";break;
case 2:txt = "#";break;
case 3:txt = i+"#";break;
}
System.out.println("当前数字:" + i + "---->" + txt);
}
}

private boolean op3(int i){
if (i % 3 == 0) {
return true;
}
return false;
}

private boolean op5(int i) {
if (i % 5 == 0) {
return true;
}
return false;
}
}


输出:

当前数字:1---->
当前数字:2---->
当前数字:3---->*
当前数字:4---->
当前数字:5---->#
当前数字:6---->*
当前数字:7---->
当前数字:8---->
当前数字:9---->*
当前数字:10---->#
当前数字:11---->
当前数字:12---->*
当前数字:13---->
当前数字:14---->
当前数字:15---->15#
当前数字:16---->
当前数字:17---->
当前数字:18---->*
当前数字:19---->
当前数字:20---->#
当前数字:21---->*
当前数字:22---->
当前数字:23---->
当前数字:24---->*
当前数字:25---->#
当前数字:26---->
当前数字:27---->*
当前数字:28---->
当前数字:29---->
当前数字:30---->30#
当前数字:31---->
当前数字:32---->
当前数字:33---->*
当前数字:34---->
当前数字:35---->#
当前数字:36---->*
当前数字:37---->
当前数字:38---->
当前数字:39---->*
当前数字:40---->#
当前数字:41---->
当前数字:42---->*
当前数字:43---->
当前数字:44---->
当前数字:45---->45#
当前数字:46---->
当前数字:47---->
当前数字:48---->*
当前数字:49---->
当前数字:50---->#
当前数字:51---->*
当前数字:52---->
当前数字:53---->
当前数字:54---->*
当前数字:55---->#
当前数字:56---->
当前数字:57---->*
当前数字:58---->
当前数字:59---->
当前数字:60---->60#
当前数字:61---->
当前数字:62---->
当前数字:63---->*
当前数字:64---->
当前数字:65---->#
当前数字:66---->*
当前数字:67---->
当前数字:68---->
当前数字:69---->*
当前数字:70---->#
当前数字:71---->
当前数字:72---->*
当前数字:73---->
当前数字:74---->
当前数字:75---->75#
当前数字:76---->
当前数字:77---->
当前数字:78---->*
当前数字:79---->
当前数字:80---->#
当前数字:81---->*
当前数字:82---->
当前数字:83---->
当前数字:84---->*
当前数字:85---->#
当前数字:86---->
当前数字:87---->*
当前数字:88---->
当前数字:89---->
当前数字:90---->90#
当前数字:91---->
当前数字:92---->
当前数字:93---->*
当前数字:94---->
当前数字:95---->#
当前数字:96---->*
当前数字:97---->
当前数字:98---->
当前数字:99---->*
当前数字:100---->#

Process finished with exit code 0


9L的代码,好不easy看明确,改动了一下下,更符合题意

public class Test {
public static void main(String[] args){
int max = 100;
int flag3 = 1;      // 正整数不包含0,所以从1開始计数
int flag5 = 1;
int sum3 = 0;       // i%3 == 0 && i%15 == 0
int sum5 = 0;       // i%5 == 0
while (sum3 < max || sum5 < max) {
sum3 = flag3 * 3;
sum5 = flag5 * 5;
if (sum3 < sum5) {
System.out.println(sum3 + ":*");
flag3++;
} else if (sum3 > sum5) {
System.out.println(sum5 + ":#");
flag5++;
} else {
System.out.println(sum3 + ":*#");
flag5++;
flag3++;
}
}
}
}
输出是这种(不要纠结,想要全然符合题意,仅仅须要改动相应的sout方法,这里仅仅是为了測试结果好看一点)

3:*
5:#
6:*
9:*
10:#
12:*
15:*#
18:*
20:#
21:*
24:*
25:#
27:*
30:*#
33:*
35:#
36:*
39:*
40:#
42:*
45:*#
48:*
50:#
51:*
54:*
55:#
57:*
60:*#
63:*
65:#
66:*
69:*
70:#
72:*
75:*#
78:*
80:#
81:*
84:*
85:#
87:*
90:*#
93:*
95:#
96:*
99:*
100:#
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: