论坛首页 招聘求职论坛

JMS接收消息实例

浏览 20578 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-23  
第1题:

	@Test
	public void test2()
	{
		String s = "DBCA";
		sort(s);
	}

	public static void sort(String str)
	{
		char [] chars = str.toCharArray();
		Arrays.sort(chars);
		for(int i = 0; i < chars.length; i ++)
		{
			System.out.println(chars[i]);
		}
	}


匆忙之作,见丑!
0 请登录后投票
   发表时间:2008-10-23  
6246850 写道
pure 写道
第一个题用集合并实现排序接口不可以么?


应该可以的,用冒炮排序应该更好点!



冒泡效率太低了吧,特别是大数据的时候,还是快速排序或者堆排序比较好
0 请登录后投票
   发表时间:2008-10-23  
supercrsky 写道
第1题:

	@Test
	public void test2()
	{
		String s = "DBCA";
		sort(s);
	}

	public static void sort(String str)
	{
		char [] chars = str.toCharArray();
		Arrays.sort(chars);
		for(int i = 0; i < chars.length; i ++)
		{
			System.out.println(chars[i]);
		}
	}


匆忙之作,见丑!



我觉得应该是考基础的算法,而不是用JAVA API去排序。。。。。。。。

用Arrays.sort(chars);
出这个题还有意义吗?
0 请登录后投票
   发表时间:2008-10-23  
        //        1.字符串数组排序 
        //        达到效果:'A','B','C'
        String[] array = new String[26];
        java.util.Random rand = new java.util.Random();
        java.util.Set<String> set = new java.util.HashSet<String>();
        while (true) {
            set.add((char) (rand.nextInt(26) + 65) + "");
            if (set.size() == 26) {
                break;
            }
        }
        set.toArray(array);
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
        String t = null;
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = 0; j < array.length - i - 1; j++) {
                if (array[j].compareTo(array[j + 1]) > 0) {
                    t = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = t;
                }
            }
        }
        System.out.println("\n--------------------");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }

        //        2.wo jiao shenzhen 
        //        字母出现的次数。 
        //        如:a(2)j(1)
        String str = "wo jiao shenzhen";
        java.util.Map<String, Integer> map = new java.util.LinkedHashMap<String, Integer>();
        for (int i = 0; i < str.length(); i++) {
            if (map.containsKey(str.charAt(i) + "")) {
                map.put(str.charAt(i) + "", Integer.parseInt(map.get(str.charAt(i) + "") + "") + 1);
            } else {
                map.put(str.charAt(i) + "", 1);
            }
        }
        System.out.println("\n--------------------");
        java.util.Iterator<String> iterator2 = map.keySet().iterator();
        while (iterator2.hasNext()) {
            String key = iterator2.next();
            String value = map.get(key) + "";
            System.out.print(key + "(" + value + ")");
        }


下面的方法应该更快。
supercrsky 写道
第2题:
public static void count(String str)
	{
		// 用于存储a-z出现的次数
		int[] nums = new int[26];
		for (char i : str.toCharArray())
		{
			// 在字母的范围内
			if (i >= 97 && i <= 123)
			{
				nums[i - 97]++;
			}

		}

		for (int i = 0; i < nums.length; i++)
		{
			// 只显示出现的
			if (nums[i] != 0)
			{
				System.out.println((char) (97 + i) + ":" + nums[i]);
			}
		}
	}

0 请登录后投票
   发表时间:2008-10-24  
dongivan 的方法不错,有创意
之前没想到这点
0 请登录后投票
   发表时间:2008-10-24  
看看这个,第二题
   public static void main(String[] args) {
		String s = "wo jiao shenzhen ";
		char[] chars = s.toCharArray();
		char[] chars1 = null;
		Arrays.sort(chars);
		for (int i = 0; i < chars.length; i++) {
			if (chars[i] != ' ') {
				chars1 = new char[chars.length - i];
				System.arraycopy(chars, i, chars1, 0, chars1.length);
				break;
			}
		}

		for (int i = 0, j = 1; i < chars1.length; i++) {
			char a = chars1[i];
			if (i != chars1.length - 1 && chars1[i + 1] != a) {
				System.out.println(a + "(" + j + ")");
				j = 1;
			} else {
				j++;
			}
		}
	}
0 请登录后投票
   发表时间:2008-10-24  
malk 写道
看看这个,第二题
   public static void main(String[] args) {
		String s = "wo jiao shenzhen ";
		char[] chars = s.toCharArray();
		char[] chars1 = null;
		Arrays.sort(chars);
		for (int i = 0; i < chars.length; i++) {
			if (chars[i] != ' ') {
				chars1 = new char[chars.length - i];
				System.arraycopy(chars, i, chars1, 0, chars1.length);
				break;
			}
		}

		for (int i = 0, j = 1; i < chars1.length; i++) {
			char a = chars1[i];
			if (i != chars1.length - 1 && chars1[i + 1] != a) {
				System.out.println(a + "(" + j + ")");
				j = 1;
			} else {
				j++;
			}
		}
	}


看了顿时了解为啥下岗了。
想过你的array.sort的时间复杂度么?
0 请登录后投票
   发表时间:2008-10-24  
楼上是意思是不是这样?
   public static void main(String[] args) {
		String s = "wo jiao shenzhen ";
		char[] chars = s.toCharArray();
		char[] chars1 = null;
		//排序
		for (int i = 0; i < chars.length; ++i) {
			char temp;
			for (int j = 0; j < chars.length - i - 1; ++j) {
				if (chars[j] > chars[j + 1]) {
					temp = chars[j];
					chars[j] = chars[j + 1];
					chars[j + 1] = temp;
				}
			}
		}
		//去除空格
		for (int i = 0; i < chars.length; i++) {
			if (chars[i] != ' ') {
				chars1 = new char[chars.length - i];
				System.arraycopy(chars, i, chars1, 0, chars1.length);
				break;
			}
		}
        //计数
		for (int i = 0, j = 1; i < chars1.length; i++) {
			char a = chars1[i];
			if (i != chars1.length - 1 && chars1[i + 1] != a) {
				System.out.println(a + "(" + j + ")");
				j = 1;
			} else {
				j++;
			}
		}
	}
0 请登录后投票
   发表时间:2008-10-24  
恭喜你,你成功的吧O(nlogn)的时间复杂度提高到O(n^2)
把quicksort变成了bubblesort,你再想想,这个东西需要排序么?
0 请登录后投票
   发表时间:2008-10-24  
javaboy2006 写道



下面的方法应该更快。
supercrsky 写道
第2题:
public static void count(String str)
	{
		// 用于存储a-z出现的次数
		int[] nums = new int[26];
		for (char i : str.toCharArray())
		{
			// 在字母的范围内
			if (i >= 97 && i <= 123)
			{
				nums[i - 97]++;
			}

		}

		for (int i = 0; i < nums.length; i++)
		{
			// 只显示出现的
			if (nums[i] != 0)
			{
				System.out.println((char) (97 + i) + ":" + nums[i]);
			}
		}
	}


我到是觉得这个只看第二题来说效率最高,只不过是有大写字母和其他字符就不好办了,如果排序的话也就顺便把第一题也做了
0 请登录后投票
论坛首页 招聘求职版

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