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方法测了下。
评论
wty_703
2008-05-20
int i = 312412412;
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);
wty_703
2008-05-20
int i = 312412412;
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);
zwm
2008-05-11
哦,我搞错了,反过来就越界了.
zwm
2008-05-11
试一下这个:1234560789
hgz123
2008-05-08
其实不要把简单的事情想复杂了`~
sblxw
2008-05-06
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);
}
}
wdlfellow
2008-05-06
不错!
--学习了
--学习了
zwm512327
2008-05-04
正是因为字符串转成数字容易,所以不让用字符串来解决。他考的是算法,不是知识。转字符串,数字等的那个不需要算法。这个谁都明白
lubang168
2008-05-04
字符串转换成数字不是很容易的吗?
zwm512327
2008-05-04
前两位还是没看明白!
是数字,不是字符串!!!字符串的话,我比你更有简单的办法。
去看下StringBuffer类的API,有个方法就revers()。这方法直接就逆转了。
因为是数字,不是String,不能用数组,拆成char那样一点难度都没有。
是数字,不是字符串!!!字符串的话,我比你更有简单的办法。
去看下StringBuffer类的API,有个方法就revers()。这方法直接就逆转了。
因为是数字,不是String,不能用数组,拆成char那样一点难度都没有。
imjl
2008-05-04
写了个php的
$str = 'hello';
for ($i=strlen($str); $i>=0; $i--){
echo $str[$i];
}
output:olleh
$str = 'hello';
for ($i=strlen($str); $i>=0; $i--){
echo $str[$i];
}
output:olleh
lubang168
2008-05-04
public static void main(String[] args) {
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);
}
这样就没问题了.
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);
}
这样就没问题了.
zwm512327
2008-05-03
因为要求返回的是一个数字,当然是100转成1是正确的,而001是不正确的。因为要求了不让转成String或者char等,我觉的输出一个001也是不可能的吧。输入的参数是数字,输出的也是数字。并不是要求字符串逆转,不然的话我用StringBuffer的方法岂不是更好。
dananhai
2008-05-03
对于数字 2343或者 2004,即最后一位不是0的能行。
如果是100,会转成1。
单独的一位也测试正确
如果是100,会转成1。
单独的一位也测试正确
laorer
2008-05-03
如果他在你说之前把约束条件说出来,估计会更好,要不然会很打击人的,想到一种方法说不行,想到一种方法说不行,人都会闷死.
感觉如果考思维还可以,但如果仅仅是道面试题觉得没必要,有现成的东西,为什么不用?
感觉如果考思维还可以,但如果仅仅是道面试题觉得没必要,有现成的东西,为什么不用?
lkh_chenqun
2008-05-03







评论排行榜