网上有一个号称“火柴棍”式的面试题,分享一下。
题目:修改下面一段问题代码,输出20个“-”,但只能增加或修改其中一个字符,提供三种解决方案。
问题代码:
int n = 20;
for(int i = 0; i < n; i--){
System.out.print("-");
我的三种解法:
//解法一
/*int n = 20;
for(int i = 0; i < n; i++) {
P.pp("-");
count++;
}
P.p(count);*/
//解法二
/*int n = 20;
for(int i = 0; -i < n; i--) {
P.pp("-");
count++;
}
P.p(count);*/
//解法三
/*int n = 20;
for(int i = 0; i < n; n--) {
P.pp("-");
count++;
}
P.p(count);*/
}
网上分了三个级别:聪明的用10分钟,不赖的用15分钟,笨的没点了。还好我差不多用了15分钟,还算不错。。
思路:其实题目比较小,代码比较少,对于大家来说可以直接"目测"。呵呵,说白了挨个测,也不难。但作为面试题来说,要考虑一下面试官的意图。
首先可以画简单的图,列简单的数,来说明对问题的理解。(沟通)
其次把循环拆开,化繁为简,来试循环里的条件。但心里要做好测试。(解决途径)
大家还有什么更好的解法么?可否分享解题思路。
这种题还可以有变种的,有想法的写下,共同思考。。