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

这个是题目网址:http://student.csdn.net/mcd/topic/235300/753730


注意:

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

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

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

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

本来一看感觉很简单,但是写了一会儿之后越来越感觉不是那么简单,哭,于是我就充分利用咱们Java面向对象的特性,写完了。


上代码(感觉差不多是这样了,有错漏的地方还希望前辈们指正一下大笑

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

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * 依序遍历0到100闭区间内所有的正整数, 
  3.  * 如果该数字能被3整除,则输出该数字及‘*’标记; 
  4.  * 如果该数字能被5整除,则输出该数字及‘#’标记; 
  5.  * 如果该数字既能被3整除又能被5整除,则输出该数字及‘*#’标记。 
  6.  */  
  7. public class Print {  
  8.     public static void main(String[] args){  
  9.         new Print().prints();  
  10.     }  
  11.     private void prints(){  
  12.         for(int i = 1;i <= 100;i++){  
  13.             String txt = "";  
  14.             int flag = 0;  
  15.             if (op3(i)){  
  16.                 flag += 1;  
  17.             }  
  18.             if (op5(i)){  
  19.                 flag += 2;  
  20.             }  
  21.             switch (flag){  
  22.                 case 1:txt = "*";break;  
  23.                 case 2:txt = "#";break;  
  24.                 case 3:txt = i+"#";break;  
  25.             }  
  26.             System.out.println("当前数字:" + i + "---->" + txt);  
  27.         }  
  28.     }  
  29.   
  30.     private boolean op3(int i){  
  31.         if (i % 3 == 0) {  
  32.            return true;  
  33.         }  
  34.         return false;  
  35.     }  
  36.   
  37.     private boolean op5(int i) {  
  38.         if (i % 5 == 0) {  
  39.             return true;  
  40.         }  
  41.         return false;  
  42.     }  
  43. }  

输出:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. 当前数字:1---->  
  2. 当前数字:2---->  
  3. 当前数字:3---->*  
  4. 当前数字:4---->  
  5. 当前数字:5---->#  
  6. 当前数字:6---->*  
  7. 当前数字:7---->  
  8. 当前数字:8---->  
  9. 当前数字:9---->*  
  10. 当前数字:10---->#  
  11. 当前数字:11---->  
  12. 当前数字:12---->*  
  13. 当前数字:13---->  
  14. 当前数字:14---->  
  15. 当前数字:15---->15#  
  16. 当前数字:16---->  
  17. 当前数字:17---->  
  18. 当前数字:18---->*  
  19. 当前数字:19---->  
  20. 当前数字:20---->#  
  21. 当前数字:21---->*  
  22. 当前数字:22---->  
  23. 当前数字:23---->  
  24. 当前数字:24---->*  
  25. 当前数字:25---->#  
  26. 当前数字:26---->  
  27. 当前数字:27---->*  
  28. 当前数字:28---->  
  29. 当前数字:29---->  
  30. 当前数字:30---->30#  
  31. 当前数字:31---->  
  32. 当前数字:32---->  
  33. 当前数字:33---->*  
  34. 当前数字:34---->  
  35. 当前数字:35---->#  
  36. 当前数字:36---->*  
  37. 当前数字:37---->  
  38. 当前数字:38---->  
  39. 当前数字:39---->*  
  40. 当前数字:40---->#  
  41. 当前数字:41---->  
  42. 当前数字:42---->*  
  43. 当前数字:43---->  
  44. 当前数字:44---->  
  45. 当前数字:45---->45#  
  46. 当前数字:46---->  
  47. 当前数字:47---->  
  48. 当前数字:48---->*  
  49. 当前数字:49---->  
  50. 当前数字:50---->#  
  51. 当前数字:51---->*  
  52. 当前数字:52---->  
  53. 当前数字:53---->  
  54. 当前数字:54---->*  
  55. 当前数字:55---->#  
  56. 当前数字:56---->  
  57. 当前数字:57---->*  
  58. 当前数字:58---->  
  59. 当前数字:59---->  
  60. 当前数字:60---->60#  
  61. 当前数字:61---->  
  62. 当前数字:62---->  
  63. 当前数字:63---->*  
  64. 当前数字:64---->  
  65. 当前数字:65---->#  
  66. 当前数字:66---->*  
  67. 当前数字:67---->  
  68. 当前数字:68---->  
  69. 当前数字:69---->*  
  70. 当前数字:70---->#  
  71. 当前数字:71---->  
  72. 当前数字:72---->*  
  73. 当前数字:73---->  
  74. 当前数字:74---->  
  75. 当前数字:75---->75#  
  76. 当前数字:76---->  
  77. 当前数字:77---->  
  78. 当前数字:78---->*  
  79. 当前数字:79---->  
  80. 当前数字:80---->#  
  81. 当前数字:81---->*  
  82. 当前数字:82---->  
  83. 当前数字:83---->  
  84. 当前数字:84---->*  
  85. 当前数字:85---->#  
  86. 当前数字:86---->  
  87. 当前数字:87---->*  
  88. 当前数字:88---->  
  89. 当前数字:89---->  
  90. 当前数字:90---->90#  
  91. 当前数字:91---->  
  92. 当前数字:92---->  
  93. 当前数字:93---->*  
  94. 当前数字:94---->  
  95. 当前数字:95---->#  
  96. 当前数字:96---->*  
  97. 当前数字:97---->  
  98. 当前数字:98---->  
  99. 当前数字:99---->*  
  100. 当前数字:100---->#  
  101.   
  102. Process finished with exit code 0  


9L的代码,好不容易看明白,修改了一下下,更符合题意

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public class Test {  
  2.     public static void main(String[] args){  
  3.         int max = 100;  
  4.         int flag3 = 1;      // 正整数不包括0,所以从1开始计数  
  5.         int flag5 = 1;  
  6.         int sum3 = 0;       // i%3 == 0 && i%15 == 0  
  7.         int sum5 = 0;       // i%5 == 0  
  8.         while (sum3 < max || sum5 < max) {  
  9.             sum3 = flag3 * 3;  
  10.             sum5 = flag5 * 5;  
  11.             if (sum3 < sum5) {  
  12.                 System.out.println(sum3 + ":*");  
  13.                 flag3++;  
  14.             } else if (sum3 > sum5) {  
  15.                 System.out.println(sum5 + ":#");  
  16.                 flag5++;  
  17.             } else {  
  18.                 System.out.println(sum3 + ":*#");  
  19.                 flag5++;  
  20.                 flag3++;  
  21.             }  
  22.         }  
  23.     }  
  24. }  
输出是这样的 ( 不要纠结,想要完全符合题意,只需要修改对应的sout方法,这里只是为了测试结果好看一点)

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. 3:*  
  2. 5:#  
  3. 6:*  
  4. 9:*  
  5. 10:#  
  6. 12:*  
  7. 15:*#  
  8. 18:*  
  9. 20:#  
  10. 21:*  
  11. 24:*  
  12. 25:#  
  13. 27:*  
  14. 30:*#  
  15. 33:*  
  16. 35:#  
  17. 36:*  
  18. 39:*  
  19. 40:#  
  20. 42:*  
  21. 45:*#  
  22. 48:*  
  23. 50:#  
  24. 51:*  
  25. 54:*  
  26. 55:#  
  27. 57:*  
  28. 60:*#  
  29. 63:*  
  30. 65:#  
  31. 66:*  
  32. 69:*  
  33. 70:#  
  34. 72:*  
  35. 75:*#  
  36. 78:*  
  37. 80:#  
  38. 81:*  
  39. 84:*  
  40. 85:#  
  41. 87:*  
  42. 90:*#  
  43. 93:*  
  44. 95:#  
  45. 96:*  
  46. 99:*  
  47. 100:#  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值