2008-05-02
华为5分钟的编程题
关键字: java学习去华为面试的一道编程题,要求五分钟写一个程序。把一个输入的数字完全逆转。比如输入25679,返回97652。我第一想法是用StringBuffer的reverse()一句话就写完了。eg:StringBuffer stb=new StringBuffer("3d3a555445");
stb.reverse();然后在先转成String类型,逆转后再转回去。结果面试官说,不能用Java的类库方法。顿时压力就有点大了。然后想先解析成字符用Vector来存储,可以知道长度,比数组简单,应该也能很快搞定。面试官看了下说还是不行,我就说我只是把Vector当数组来使用还不行?他说压根不允许用数组。当时头就大了。数组都不让用那怎么做啊。结果他说不用数组反而一下激发了我,这题就很简单,不让用数组是因为就用不着。想通了算法就简单了,不是五分钟的问题。原来写五行代码就够了。当时是只写了一个方法,面
public class Re {
public static int reverse(int num){
int returnNum=0;
int yuShu=0;
while(num>9){
yuShu=num%10;
num=num/10;
returnNum=returnNum*10+yuShu;
}
return returnNum*10+num;
}
public static void main(String[] args) {
System.out.println(reverse(356212232));
}
}
试完后回家在电脑上加了main方法测了下。


评论
int result = 0;
while(i!=0){
int k =i;
result +=k%10;
result *=10;
i /=10;
}
System.out.println(result/10);
int result = 0;
while(i!=0){
int k =i;
result +=k%10;
result *=10;
i /=10;
}
System.out.println(result/10);
public class Re { public static void reverse(int num) { System.out.print(num % 10); if (num > 10) reverse(num / 10); } public static void main(String[] args) { reverse(356212232); } }--学习了
是数字,不是字符串!!!字符串的话,我比你更有简单的办法。
去看下StringBuffer类的API,有个方法就revers()。这方法直接就逆转了。
因为是数字,不是String,不能用数组,拆成char那样一点难度都没有。
$str = 'hello';
for ($i=strlen($str); $i>=0; $i--){
echo $str[$i];
}
output:olleh
String str="2514584120";
int len=str.length();
String st="";
for(int i=0;i<len;i++){
st+=str.charAt(len-i-1);
}
System.out.println(st);
}
这样就没问题了.
如果是100,会转成1。
单独的一位也测试正确
感觉如果考思维还可以,但如果仅仅是道面试题觉得没必要,有现成的东西,为什么不用?