给大家分享个面试题,挺简单能写出来的新手来试试

嘛米嘛米轰 2013-11-03 12:31:06
对字符串"100,10,1,0,15,20"中的数字进行升序排列,请实现下列代码中的sort方法。
public class Test1 {
public static String sort(String args){


}
public static void main(String[] args) {
String s = "100,10,1,0,15,20";
System.out.print(sort(s));//输出0,1,10,15,20,100,
}
...全文
706 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
naige987 2013-11-10
  • 打赏
  • 举报
回复
import java.util.*; public class Demo { public static void main(String[] args) { String s = "100,10,1,0,15,20"; System.out.println(sort(s)); } private static String sort(String s) { //切割字符串撑字符数组tar String[] tar = s.split(","); //建立名为haha的ArrayList List<Integer> haha = new ArrayList<Integer>(); //将 tar依次放入ArraLyist里面,在放入的时候把string类型转化为int类型 for(String a : tar) { haha.add(new Integer(a)); } //建立和tar长度相同的int型数组heihei,用于接收ArrayList里面的参数 Integer[] heihei = new Integer[tar.length]; //调用ArrayList里面的方法,将ArrayList里面的元素放入heihei haha.toArray(heihei); //调用整数数组的排序方法 Arrays.sort(heihei); StringBuffer sb = new StringBuffer(); for(int x :heihei) { sb.append(x); sb.append(","); } return sb.toString(); }
naige987 2013-11-10
  • 打赏
  • 举报
回复
呵呵 ,我也是新手这道题花了好久的时间,不过挺开心的。 思路就是将字符转换成整数型数组,然后调用本身的sort();方法进行排序。 import java.util.*; public class Demo { public static void main(String[] args) { String s = "100,10,1,0,15,20"; System.out.println(sort(s)); } private static String sort(String s) { String[] tar = s.split(","); List<Integer> haha = new ArrayList<Integer>(); for(String a : tar) { haha.add(new Integer(a)); } Integer[] heihei = new Integer[tar.length]; haha.toArray(heihei); Arrays.sort(heihei); StringBuffer sb = new StringBuffer(); for(int x :heihei) { sb.append(x); sb.append(","); } return sb.toString(); } }
观鱼塘主 2013-11-10
  • 打赏
  • 举报
回复
引用 7 楼 u010179812 的回复:
不过我觉得我这种方法不可取,因为如果给出的字符串过长的话,那就麻烦了。
嗯,算法的目的就是要以不变应万变,多多体会!
小绵羊 2013-11-08
  • 打赏
  • 举报
回复
引用 21 楼 sunbo624 的回复:
[quote=引用 20 楼 x19881216 的回复:] [quote=引用 19 楼 sunbo624 的回复:] [quote=引用 18 楼 x19881216 的回复:] [quote=引用 8 楼 sunbo624 的回复:]

Arrays.sort(s.split(","), new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() == o2.length() ? o1.compareTo(o2) : o1.length - o2.length;
}
});
String实现了Comparable接口,直接 return o1.compareTo(o2)就可以了[/quote] 不对 String实现的compareTo 2 > 11 所以需要自定义 先比较长度[/quote] 刚去看了下源码String实现的是先逐位对比,然后才去比较长度。。。以前不知道在哪里看的一个实现是先比较长度后逐位对比的,,搞混了 [/quote] 而且String的实现还没做空判断 我觉得我写过的大部分都要用所谓的策略模式去实现Comparator[/quote] StringUtils
sunbo624 2013-11-08
  • 打赏
  • 举报
回复
引用 20 楼 x19881216 的回复:
[quote=引用 19 楼 sunbo624 的回复:] [quote=引用 18 楼 x19881216 的回复:] [quote=引用 8 楼 sunbo624 的回复:]

Arrays.sort(s.split(","), new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() == o2.length() ? o1.compareTo(o2) : o1.length - o2.length;
}
});
String实现了Comparable接口,直接 return o1.compareTo(o2)就可以了[/quote] 不对 String实现的compareTo 2 > 11 所以需要自定义 先比较长度[/quote] 刚去看了下源码String实现的是先逐位对比,然后才去比较长度。。。以前不知道在哪里看的一个实现是先比较长度后逐位对比的,,搞混了 [/quote] 而且String的实现还没做空判断 我觉得我写过的大部分都要用所谓的策略模式去实现Comparator
小绵羊 2013-11-08
  • 打赏
  • 举报
回复
引用 19 楼 sunbo624 的回复:
[quote=引用 18 楼 x19881216 的回复:] [quote=引用 8 楼 sunbo624 的回复:]

Arrays.sort(s.split(","), new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() == o2.length() ? o1.compareTo(o2) : o1.length - o2.length;
}
});
String实现了Comparable接口,直接 return o1.compareTo(o2)就可以了[/quote] 不对 String实现的compareTo 2 > 11 所以需要自定义 先比较长度[/quote] 刚去看了下源码String实现的是先逐位对比,然后才去比较长度。。。以前不知道在哪里看的一个实现是先比较长度后逐位对比的,,搞混了
sunbo624 2013-11-08
  • 打赏
  • 举报
回复
引用 18 楼 x19881216 的回复:
[quote=引用 8 楼 sunbo624 的回复:]

Arrays.sort(s.split(","), new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() == o2.length() ? o1.compareTo(o2) : o1.length - o2.length;
}
});
String实现了Comparable接口,直接 return o1.compareTo(o2)就可以了[/quote] 不对 String实现的compareTo 2 > 11 所以需要自定义 先比较长度
小绵羊 2013-11-08
  • 打赏
  • 举报
回复
引用 8 楼 sunbo624 的回复:

Arrays.sort(s.split(","), new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() == o2.length() ? o1.compareTo(o2) : o1.length - o2.length;
}
});
String实现了Comparable接口,直接 return o1.compareTo(o2)就可以了
TableMiao 2013-11-08
  • 打赏
  • 举报
回复
排序考察的应该是TreeSet
TableMiao 2013-11-08
  • 打赏
  • 举报
回复
单机试了一下:直接可以排序 public class Num { public static void main(String[] args) { String str = "100,10,1,0,15,20"; String[] num = str.split(","); TreeSet<Integer> set = new TreeSet<Integer>(); for(int i=0;i<num.length;i++){ set.add(Integer.parseInt(num[i])); } Iterator<Integer> ItNum = set.iterator(); while(ItNum.hasNext()){ System.out.print(ItNum.next()+" "); } } }
fenfendoudou 2013-11-07
  • 打赏
  • 举报
回复
public class Test1 { public static List<Integer> sort(String args){ String[] string=args.split(","); List<Integer> list = new ArrayList<Integer>(); for (String string2 : string) { list.add(Integer.parseInt(string2)); } Collections.sort(list); return list; } public static void main(String[] args) { String s = "100,10,1,0,15,20"; System.out.print(sort(s));//输出0,1,10,15,20,100, } } 八楼是高手,这个还是看思维,这种题也就是练习题而已,实际项目中肯定不会是这样的,字符串里存这种内容,这个题的实际案例可以理解为典型的xml解析,或者是协议交互的参数解析等实际内容(比如以|分割的字符串等等)
纳兰容若 2013-11-07
  • 打赏
  • 举报
回复
String str = "1,5,4,22,6,32,56,742,44";
		String[] group = str.split(",");
		Arrays.sort(group, new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				return o1.length() == o2.length() ? o1.compareTo(o2):o1.length() - o2.length();
			}
		});
		System.out.println(Arrays.toString(group).replaceAll("\\[|\\]| ", ""));
solomon5926 2013-11-07
  • 打赏
  • 举报
回复
花了好长时间去写,写得不好,丢人了,但是还是想贴出来,要不就白写了,运行结果正确!(*^__^*) 嘻嘻……

import java.util.ArrayList;
import java.util.List;

public class StringSort
{
	public static void main(String[] args)
	{
		String s = "100,10,1,0,15,20";
		System.out.print(sort(s));
		
	}
	
	public static String sort(String s)
	{
		char[] ch = s.toCharArray();
		List<Integer> list1 = new ArrayList<Integer>();
		List<Integer> list2 = new ArrayList<Integer>();
		
		//获得所有","的位置
		for (int i=0; i<s.length(); i++)
		{
			if (',' == ch[i])
			{
				list1.add(i);
			}
		}
		int n = 0;
		int m = 0;
		Integer temp;
		
		//获得字符串中的数字
		for (int j=0; j<list1.size(); j++)
		{
			
			if (0 == j)
			{
				m = list1.get(j);
				String str = new String(ch,n,m-n);
				temp = new Integer(Integer.parseInt(str));
				list2.add(temp);
				n = m + 1;
			}
			else if (j>0 && j<list1.size()-1)
			{
				m = list1.get(j);
				String str = new String(ch,n,m-n);
				temp = new Integer(Integer.parseInt(str));
				list2.add(temp);
				n = m + 1;
			}
			else
			{
				m = list1.get(j);
				String str = new String(ch,n,m-n);
				temp = new Integer(Integer.parseInt(str));
				list2.add(temp);
				n = m + 1;
				String last = new String(ch,n,ch.length-n);
				Integer lastTemp = new Integer(Integer.parseInt(last));
				list2.add(lastTemp);
			}
			
		}
		
		//使用冒泡排序
		for (int k=list2.size(); k>2; k--)
		{
			for (int q=0; q<k-1; q++)
			{
				if (list2.get(q) > list2.get(q+1))
				{
					int tem = list2.get(q);
					list2.set(q, list2.get(q+1));
					list2.set(q+1, tem);
				}
			}
		}
		
		StringBuffer strb = new StringBuffer();
		for (int p=0; p<list2.size(); p++)
		{
			strb.append(list2.get(p));
			if (list2.size()-1 != p)
			{
				strb.append(',');
			}
		}
		
		String string = new String(strb);
		
		return string;
	}
}

hubeihuyang 2013-11-06
  • 打赏
  • 举报
回复
借助8楼哥们的思路:

import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

public class Test1 {
	
	public static void main(String[] args) 
	{
		String s = "100,10,1,0,15,20";
		String[] arr = s.split(",");
		TreeSet<String> set = new TreeSet<String>(new MyComparator());
		for(int i=0;i<arr.length;i++)
		{
			set.add(arr[i]);
		}
		Iterator<String> iterator = set.iterator();
		while(iterator.hasNext())
		{
			String os = iterator.next();
			System.out.println(os);
		}
	}
}
class MyComparator implements Comparator<String>
{
	public int compare(String o1, String o2) 
	{
		return o1.length()==o2.length()?o1.compareTo(o2):o1.length()-o2.length();
	}
	
}
丿Kevin 2013-11-06
  • 打赏
  • 举报
回复
public class Test1 {
public static String sort(String args){
  StringBuffer value = "";
  int[] nums = args.split(",");
  nums = Arrays.sort(nums);
  for(int i : nums) {
    value.append(i + ",");
  }
  return value;   
}
public static void main(String[] args) {
  String s = "100,10,1,0,15,20";
  System.out.print(sort(s));//输出0,1,10,15,20,100,
}
小_Dream 2013-11-06
  • 打赏
  • 举报
回复
public static void sort(String args){
String[] str = args.split(",");//分割字符串
//声明一个整形数组,用来存储分割后的字符串
int[] arr = new int[6];
for(int i = 0;i<str.length;i++){
arr[i] = (int)Integer.parseInt(str[i]);
}
//冒泡排序
for(int x =arr.length-1;x>0;x--){
for(int y = 0;y<x;y++){
int temp =0;
if(arr[y]>arr[y+1]){
temp = arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;

}
}
}
//循环便利整形数组
for(int i =0;i<arr.length;i++){
System.out.println(arr[i]);
}
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "100,10,1,0,15,20";
sort(s);
Mourinho 2013-11-05
  • 打赏
  • 举报
回复

static String sort(String args) {
		if(args == null || args.isEmpty() || !args.contains(",")) {
			return args;
		}
		String[] strArr = args.split(",");
		int[] intArr = new int[strArr.length];
		for(int i = 0;i < strArr.length;++i) {
			intArr[i] = Integer.valueOf(strArr[i]);
		}
		Arrays.sort(intArr);
		StringBuffer sb = new StringBuffer();
		for(int i = 0;i < intArr.length;++i) {
			sb.append(intArr[i]);
			if(i != intArr.length - 1) {
				sb.append(",");
			}
		}
		return sb.toString();
	}
jessie0605 2013-11-05
  • 打赏
  • 举报
回复
public class Test1 { public static String sort(String args) { String[] temp = args.split(","); int[] src = new int[temp.length]; for (int i = 0; i < temp.length; i++) { src[i] = Integer.parseInt(temp[i]); } int[] srcD = bubbleSort(src); String ans = ""; for (int i : srcD) { ans += i + " "; } return ans; } public static int[] bubbleSort(int[] src) {//冒泡排序法,你也可以用其他排序方法来代替 for (int i = 1; i < src.length; i++) { for (int j = 0; j < src.length - i; j++) { if (src[j] > src[j + 1]) { swap(src, j, j + 1); } } } return src; } public static void swap(int[] src, int i, int j) {//交换两个值 src[i] = src[i] + src[j]; src[j] = src[i] - src[j]; src[i] = src[i] - src[j]; } public static void main(String[] args) { String s = "100,10,1,0,15,20"; System.out.print(sort(s));// 输出0,1,10,15,20,100, } }
u010179812 2013-11-04
  • 打赏
  • 举报
回复
不过我觉得我这种方法不可取,因为如果给出的字符串过长的话,那就麻烦了。
  • 打赏
  • 举报
回复
引用 5 楼 u010179812 的回复:
我加了头文件import java.util.*; 我真是新手,写这个程序用了半天功夫,有些知识我没有学到,用百度查了数字与字符串之间的转换,楼主一定要多给我分呀。
果然是新手,精神可嘉 呵呵 写完程序之后 再想想有没有别的实现方法 参考下别人的思路 对比下自己的 有助于自己的提高的 你用 substring来分割字符串 如果第一个数字不是三位数 而只是两位数呢,你的程序就崩了
加载更多回复(7)

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧