锁定老帖子 主题:一道面试排序题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2010-06-04
最后修改:2010-06-04
public static String reverseInt(int x) { String string = ""; if(x != 0) { string += x % 10 + reverseInt(x / 10); } return string; } 对于 x=0 不适用 这样就支持0了 /** * 数据翻转 * @param source * @return */ private static String recursive(int source){ if(source<=10) return source%10+""; return source%10 + "" + recursive(source/10); } public static void main(String[] args) { System.out.println(Integer.parseInt(recursive(123190))); } |
|
返回顶楼 | |
发表时间:2010-06-04
public static int reverseInt(int number) { if (number > 10) { int aInteger = number % 10; return (int) (aInteger * Math.pow(10, (number / 10 + "").length())) + reverseInt(number / 10); } else { return number; } } |
|
返回顶楼 | |
发表时间:2010-06-04
我只是记得取模计算实际上是比较耗时的一个操作。
可能转化为数组,然后再操作,效果比较好。 现在在win下,等会换到linux下,用ruby写两个测下哪个快点。 |
|
返回顶楼 | |
发表时间:2010-06-04
goby1220 写道 /** * 递归翻转 * @param source * @param index */ public static void recursiveTurnover(String source,int index){ char[] a = source.toCharArray(); if(index<=a.length/2){ System.out.print(a[(a.length-1)-index]); a[(a.length-1)-index] = a[index]; recursiveTurnover(new String(a), index+=1); }else{ System.out.print(new String(a,(a.length/2+1),a.length-(a.length/2+1))); } } 顶这个。 |
|
返回顶楼 | |
发表时间:2010-06-04
public class Reserve {
public static void main(String[] args) { int i=1234567; resv(i,0); } private static void resv(int data, int index) { String strData=data+""; if(index<strData.length()){ resv(data, index+1); System.out.println(strData.charAt(index)); } } } |
|
返回顶楼 | |
发表时间:2010-06-04
public int getS(int a) {
if (a < 0) return -getS(Math.abs(a)); else if (a < 10) return a; else return Integer.parseInt((a + "").substring((a + "").length() - 1) + getS(Integer.parseInt((a + "").substring(0, (a + "").length() - 1)))); } |
|
返回顶楼 | |
发表时间:2010-06-04
小弟第一次回复哈,还是上班时间回复的,望各位大虾拍砖!!
直接上代码哈! public static String trun(int input){ String s=input+""; System.out.println(s); char[] b=s.toCharArray(); StringBuffer result=new StringBuffer(); for(int i=b.length-1;i>=0;i--) result.append(b[i]); return result.toString(); } |
|
返回顶楼 | |
发表时间:2010-06-04
最后修改:2010-06-04
1d7500 写道 public static int reverseInt(int number) { if (number > 10) { int aInteger = number % 10; return (int) (aInteger * Math.pow(10, (number / 10 + "").length())) + reverseInt(number / 10); } else { return number; } } 我觉得这是唯一思路正确的,不过我修正了一下,还可以在8行内完成 可能很多人忽略了,输入输出都是int类型的,而且只能有一个参数吧? public static int reverse(int param){ if(param<10)return param; int p=param%10, q=param/10; if(p>0){ while((param=param/10)>0)p*=10; } return p+reverse(q); } |
|
返回顶楼 | |
发表时间:2010-06-04
public class Test {
public static String reverse(int i) { return new StringBuffer(new String().valueOf(i)).reverse().toString(); } public static void main(String[] args) { System.out.println(Test.reverse(-2345)); } } |
|
返回顶楼 | |
发表时间:2010-06-04
来一个不用递归,不用string,不用pow函数的,但没有考虑负数
public static void main(String[] args) { System.out.println(reverse(123456)); System.out.println(reverse(1234567)); System.out.println(reverse(558833221)); System.out.println(reverse(0)); System.out.printf("%X%n", reverse(0xFF, 16)); System.out.printf("%X%n", reverse(0xDEF, 16)); } public static int reverse(int n) { return reverse(n, 10); } public static int reverse(int n, int radix) { int result = 0; for (int x = 1; n >= x; x *= radix) { result *= radix; result += ((n % (x * radix)) / x); } return result; } |
|
返回顶楼 | |