论坛首页 Java企业应用论坛

一道面试排序题

浏览 35534 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (3)
作者 正文
   发表时间:2010-06-04   最后修改:2010-06-04

public int reverse(int num){
  String s = num+"";
  if(s.length()==1){
   return Integer.parseInt(s);
  }
  String s2 = s.substring(s.length()-1);
  return Integer.parseInt(s2+reverse(Integer.parseInt(s.substring(0,s.length()-1))));
}

 

0 请登录后投票
   发表时间:2010-06-04  
soton_dolphin 写道

public class Reverse{
public static void reverse(int number){
if(number<10){
System.out.print(number);
}
else{
int num = number%10;
System.out.print(num);
reverse(number/10);
}
}

public static void main(String[] args){
reverse(123);
}

}



还是这个算法经典
0 请登录后投票
   发表时间:2010-06-04  
public class MyClass {

public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String str = null;
while(!(str=s.nextLine()).equals("")) {
reverse(str,0);
}
}

private static void reverse(String str,int i) {
if(i==str.length()-1) {
System.out.print(str.charAt(i));
return;
}
reverse(str,i+1);
System.out.print(str.charAt(i));
}

}
0 请登录后投票
   发表时间:2010-06-04   最后修改:2010-06-04

    /**
    * 反转int数据
    */
    public static String reverse(int a) {
         StringBuffer sb = new StringBuffer();
         int i = String.valueOf(a).length();
         if (i > 1)
            sb.append(reverse(a % ((int)(Math.pow(10, i-1)))));
         return sb.append(a / ((int)(Math.pow(10, i-1))) ).toString();
    }

 

0 请登录后投票
   发表时间:2010-06-04  
想了一个简单的方法:既能用效率极高的置换,又能满足要求,这里就写一下简单的伪代码:
public String reverse(String str){
  reverseIntern(str.toCharArray(),0,str.length-1);
}//row count:1

private reverseIntern(char[] chs,int sIdx,int eIdx){
   if(sIdx>=eIdx)
      return;
   char temp=chs[sIdx];chs[sIdx]=chs[eIdx];chs[eIdx]=temp;
   reverseIntern(chs,sIdx+1,eIdx-1);
}//row count:6
0 请登录后投票
   发表时间:2010-06-04   最后修改:2010-06-04
soton_dolphin 写道

public class Reverse{
public static void reverse(int number){
if(number<10){
System.out.print(number);
}
else{
int num = number%10;
System.out.print(num);
reverse(number/10);
}
}

public static void main(String[] args){
reverse(123);
}

}

我也想的是这个方法,不过改成返回值了:
public static int reverse(int source) {
	if (source < 10) {
		return source;
	} else {
		int num = source % 10;
		return (int) (num * (Math.pow(10, (source + "").length() - 1)) + reverse(source / 10));
	}
}

如果最后几位为0,将忽略0的存在。
0 请登录后投票
   发表时间:2010-06-05  
C写的。
#include <stdio.h>
 
int reverse(int n, int* ret)
{
    *ret = (*ret) * 10 + n % 10;
    if (n < 10)
    {
        return;
    }
    n = n / 10;
    reserve(n, ret);
}
 
int main()
{
    int test = 123456789;
    int wanted = 0;
    reverse(test, &wanted);
    printf("%d, %d\r\n", test, wanted);
    return 0;
}
0 请登录后投票
   发表时间:2010-06-05  
public static void main(String[] args) {
int a = 12345;
StringBuffer sb = new StringBuffer("" + a);
int b = Integer.parseInt(sb.reverse().toString());
out.println(b);
}
0 请登录后投票
   发表时间:2010-06-05  
太多人不审题
0 请登录后投票
   发表时间:2010-06-05  
一个方法,参数int型,一个参数,需要用到递归,代码8行内。不知道返回类型要求是String还是int。

我觉得楼主描述的不清楚啊

题目:写一个方法,要求参数int类型,如:传入一个12345,返回结果54321。

如果这是原题,不知道是要倒序排序还是要简单的反转。但楼主题目却说是排序。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics