论坛首页 Java企业应用论坛

一道面试排序题

浏览 35543 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (3)
作者 正文
   发表时间:2010-12-25  
public static int sort(Integer num){
		if (num<10)	return num;
		else{
			int p=num%10,n = num/10;
			while(p!=0 && (num=num/10)>0){
				p *=10;
			}
			return p+sort(n);
		}
	}
	public static void main(String []args){
		String snumber ="1234567";
		Integer number= Integer.valueOf(snumber);
		System.out.println(Sort.sort(number));
	}
0 请登录后投票
   发表时间:2011-03-31  
	 public static int reverse(int i){
		 return reverseHelper(i, 0);
	 }
	 private static int reverseHelper(int i, int init){
		 if(i==0) return init;
		 return reverseHelper(i/10, init*10+i%10);
	 }

还好7行+尾递归
0 请登录后投票
   发表时间:2011-03-31   最后修改:2011-03-31

public int reverseInt(int n){
		
		String tmp = "";
		int m = n%10;		
		tmp += m;
		if(n>9)
			tmp+=reverseInt(n/10);
		
		return Integer.parseInt(tmp);
	}
 
0 请登录后投票
   发表时间:2011-03-31  
public static void main(String[] args) {
		Study s = new Study();
		System.out.println(s.sortNum(12345678));
	}
	
	String result = "";
	public String sortNum(Integer num){
			result +=num.toString().substring(num.toString().length()-1,num.toString().length());
			if ((num.toString().length()-1)>0)
			sortNum(Integer.valueOf(num.toString().substring(0,num.toString().length()-1)));
			return result;
	}
0 请登录后投票
   发表时间:2011-03-31  
为什么 这么麻烦,2行代码
StringBuffer b=new StringBuffer(String.valueOf(a));
System.out.println(b.reverse());
0 请登录后投票
   发表时间:2011-04-01  
public class Test {

public static void main(String[] args) {
System.out.println(reverseInt(12345));
}

public static String reverse(String num) {
return num.length() == 0 ? "" : num.substring(num.length() - 1) + reverse(num.substring(0, num.length() - 1));
}

private static int reverseInt(int i) {
return Integer.parseInt(reverse(String.valueOf(i)));
}

}

6行干净清爽
0 请登录后投票
   发表时间:2011-04-01   最后修改:2011-04-01
抛出异常的爱 写道
	public static void main(String[] args) { 
		System.out.println(Number.resver(1023450));
	}
	[color=red]private[/color] static String resver(int high ) {
		if(high==0) return "";		
		return (high%10)+resver(high/10);
	}

8行之内.

算法不是重点。重点是那个private 呵呵
0 请登录后投票
   发表时间:2011-04-01  
public String reverse(int x)
{
if(x<10)
return x+"";

String start=(x+"").substring(0,1);
String end=(x+"").substring((x+"").length()-1,(x+"").length());

if(x>99)
return end+reverse(Integer.parseInt((x+"").substring(1,(x+"").length()-1)))+start;
else
return end+start;
}
0 请登录后投票
   发表时间:2011-04-01  
wen866595 写道
	public static String reverseInt(int x) {
		String string = "";
		if(x != 0) {
			string += x % 10 + reverseInt(x / 10);
		}
		
		return string;
	}


对于 x=0 不适用

仔细看了其他的回复,原来有了,

 

 对于负数也不行。

0 请登录后投票
   发表时间:2011-04-01  
public int inverted(int n){
    if(n < 10)return n;
    return Integer.parseInt(n%10+""+inverted(n/10));
}
0 请登录后投票
论坛首页 Java企业应用版

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