前边说我说道这道题不用什么高大的算法就行,现在感觉或许真的不用什么高大的算法,但是各种思路来解决这个问题还是要有的。。
昨天在我的博客上看到有朋友写了另外一种方法,感觉思路挺不错的,就拿过了分享一些,原评论请看上面那个连接,由于不能附件连接:请参看以前写的文章:http://blog.csdn.net/mark_wk/article/details/24398321更多经彩请看我博客:www.marksaas.com
先说一下他的思路吧,主要是用String来控制输出结果,就是先指定一个空串来作为输出结果,如果i能被3整除就吧*附加到结果上来,如果能被5整除就把再把#附加到结果上来,或许你有些晕,还是直接看代码慢慢理解比较好。。
好了,废话不多说了上代码:
public class Baidu3{
public static void main(String[] args){
String result="";
for(int i=1;i<=100;i++){
result=i%3==0?"*":"";
result+=i%5==0?"#":"";
if(!"".equals(result)){
System.out.println(i+result);
}
}
}
}
也可以把文中的String用StringBuffer或者用StringBuffer来代替,请看:StringBuilder和StringBuffer解析(百度面试题优化需要用到的),由于有不少同学对于优化问题还有疑问,我已经把源代码贴出了,供大家参考。请参看百度开发者面试题(优化),感觉这道题的第三种方法挺不错的,但是三目运算符在运算的时候也会进行判断运算,感觉第一种方法简单明了,运行效率也差不多。果有更好的思路,欢迎探讨。。