论坛首页 Java企业应用论坛

一道面试排序题

浏览 35554 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (3)
作者 正文
   发表时间:2010-06-03  

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


面试的时候遇到这个题,还有个要求,是方法体内的代码不能超过8行,而且还要用递归。

 

 

想了好久也没想出办法来,请je的兄弟帮着写写。

 

 

   发表时间:2010-06-03  
/**
* @param source
* @param index
* 测试递归(将数据翻转)
*/
private static void recursive(int source,int index){
source = Integer.parseInt((source+"").substring(index,index+1)+(source+"").substring(0,index)+(source+"").substring(index+1));
index += 1;
if(index==(source+"").length()){
System.out.println(source);
return;
}
recursive(source,index);
}
1 请登录后投票
   发表时间:2010-06-03  

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);
}

}
2 请登录后投票
   发表时间:2010-06-03   最后修改:2010-06-03
引用
/**
* @param source
* @param index
* 测试递归(将数据翻转)
*/
private static void recursive(int source,int index){
source = Integer.parseInt((source+"").substring(index,index+1)+(source+"").substring(0,index)+(source+"").substring(index+1));
index += 1;
if(index==(source+"").length()){
System.out.println(source);
return;
}
recursive(source,index);
}

有问题 包含0就不对了 再看哈
1 请登录后投票
   发表时间:2010-06-03  
w582875929 写道
引用
/**
* @param source
* @param index
* 测试递归(将数据翻转)
*/
private static void recursive(int source,int index){
source = Integer.parseInt((source+"").substring(index,index+1)+(source+"").substring(0,index)+(source+"").substring(index+1));
index += 1;
if(index==(source+"").length()){
System.out.println(source);
return;
}
recursive(source,index);
}

有问题 包含0就不对了 再看哈

这个OK
/**
	 * @param source
	 * @param index
	 * 测试递归(将数据翻转)
	 */
	private static void recursive(int source,int index,char[] c){
		if(index==0)
			c = new char[(source+"").length()];
		c[(source+"").length()-1-index] = (source+"").charAt(index);
		if(index==(source+"").length()-1){
			System.out.println(Integer.parseInt(new String(c)));
			return;
		}
		recursive(source,index+1,c);
//		source = Integer.parseInt((source+"").substring(index,index+1)+(source+"").substring(0,index)+(source+"").substring(index+1));
//		index += 1;
//		if(index==(source+"").length()){
//			System.out.println(source);
//			return;
//		}
//		recursive(source,index);
		//char[] c = (source+"").toCharArray();
	}
2 请登录后投票
   发表时间:2010-06-04  

   对应位置对换就可以了啊

    public static String turnover(String source){
char[] a = source.toCharArray();
for(int i=0;i<a.length/2;i++){
char t = a[i];
a[i] = a[(a.length-1)-i];
a[(a.length-1)-i] = t;
}
return new String(a);
}
1 请登录后投票
   发表时间:2010-06-04  
package boke.digui;

public class Test2 {

/**
* @param args
*/
public static void main(String[] args) {
int n = 96587210;
System.out.println(n);
recursive(n,0);
}

/**
*
* @param n
* @param index
*/
public static void recursive(int n, int index) {
char[] c = (n + "").toCharArray();
int len = c.length;
if( index > len - 1) {
return;
}else{
recursive (n, index+1);
System.out.print(c[index]);
}
}

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

   对应位置对换就可以了啊

    public static String turnover(String source){
char[] a = source.toCharArray();
for(int i=0;i<a.length/2;i++){
char t = a[i];
a[i] = a[(a.length-1)-i];
a[(a.length-1)-i] = t;
}
return new String(a);
}

题目要求用递归
0 请登录后投票
   发表时间:2010-06-04  
maozj 写道
package boke.digui;

public class Test2 {

/**
* @param args
*/
public static void main(String[] args) {
int n = 96587210;
System.out.println(n);
recursive(n,0);
}

/**
*
* @param n
* @param index
*/
public static void recursive(int n, int index) {
char[] c = (n + "").toCharArray();
int len = c.length;
if( index > len - 1) {
return;
}else{
recursive (n, index+1);
System.out.print(c[index]);
}
}

}


规范一下。。。
public class Test2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int n = 96587210;
		System.out.println(n);
		recursive(n,0);
	}
	
	/**
	 * 
	 * @param n
	 * @param index
	 */
	public static void recursive(int n, int index) {
		char[] c = (n + "").toCharArray();
		int len = c.length;
		if( index > len - 1) {
			return;
		}else{
			recursive (n, index+1);
			System.out.print(c[index]);
		}
	}

}
0 请登录后投票
   发表时间:2010-06-04   最后修改:2010-06-04
/**
 * 题目:写一个方法,要求参数int类型,如:传入一个12345,返回结果54321。
 * 面试的时候遇到这个题,还有个要求,是方法体内的代码不能超过8行,而且还要用递归。
 * 
 * @author Turing
 * 
 */
public class Reverse {

	public static void main(String[] args) {
		int i = 1234567890;
		new Reverse().reverse(i);
	}

	private void reverse(int integer) {
		String str = String.valueOf(integer);
		System.out.print(str.substring(str.length() - 1));
		if (str.length() > 1) {
			String s = str.substring(0, str.length() - 1);
			this.reverse(Integer.parseInt(s));
		}
	}
}
5 请登录后投票
论坛首页 Java企业应用版

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