java笔试算法题及答案
根据给定的信息,我们可以从以下几个方面来探讨与Java笔试算法相关的知识点: ### 一、字符串分割及排序 #### 1. 使用`String.split()`方法替代`StringTokenizer` **背景介绍:** - `String.split()`方法在Java中提供了一种简单且高效的方式来分割字符串。 - 相比于`StringTokenizer`,`String.split()`更加简洁易懂,同时也更符合现代编程实践的要求。 **代码示例:** ```java public class StringSplitter { public static String[] splitStringByComma(String source) { if (source == null || source.trim().isEmpty()) { return new String[0]; } // 使用split()方法分割字符串,参数为逗号 return source.split(","); } public static void main(String[] args) { String input = "5,8,7,4,3,9,1"; String[] numbers = splitStringByComma(input); int[] integers = new int[numbers.length]; for (int i = 0; i < numbers.length; i++) { integers[i] = Integer.parseInt(numbers[i]); } // 升序排序 Arrays.sort(integers); System.out.println("升序排序:"); for (int num : integers) { System.out.println(num); } // 降序排序 System.out.println("降序排序:"); for (int i = integers.length - 1; i >= 0; i--) { System.out.println(integers[i]); } } } ``` **总结:** - 在处理字符串分割时,使用`String.split()`方法不仅更加简洁,而且也避免了使用已被废弃的`StringTokenizer`类。 - 上述代码示例展示了如何通过`String.split()`方法来分割字符串,并进行升序和降序排序。 ### 二、截取字符串确保汉字完整性 #### 2. 按字节截取字符串同时保证汉字完整 **需求分析:** - 需要编写一个函数,输入一个字符串和一个长度值,输出按照指定长度截取后的字符串。 - 截取过程中需要保证不会出现汉字被截断的情况。 **代码示例:** ```java public class StringTruncator { public static boolean isLetter(char c) { // 判断字符是否为汉字 return (c >= 0x4E00 && c <= 0x9FA5); } public static int lengthInBytes(String strSrc) { if (strSrc == null) { return 0; } int len = 0; char[] chars = strSrc.toCharArray(); for (int i = 0; i < chars.length; i++) { len += isLetter(chars[i]) ? 2 : 1; // 汉字占两个字节 } return len; } public static String truncateString(String origin, int len) { if (origin == null || origin.isEmpty() || len < 1) { return ""; } if (len > lengthInBytes(origin)) { return origin; } byte[] bytes = origin.getBytes(); int count = 0; for (int i = 0; i < len; i++) { if (bytes[i] < 0) { count++; } } if (count % 2 != 0) { --len; } return new String(bytes, 0, len); } public static void main(String[] args) { System.out.println(truncateString("我ABC汉DEF", 6)); // 输出:我ABC } } ``` **总结:** - 该函数通过判断每个字符是否为汉字来计算总长度,从而确保截取时不会出现半个汉字的情况。 - 通过计算汉字和非汉字字符的不同字节长度,可以有效地解决这一问题。 ### 三、排序算法概述及快速排序实现 #### 3. 排序算法概述 **常见排序算法:** - 插入排序(包括直接插入排序、希尔排序) - 交换排序(如冒泡排序、快速排序) - 选择排序(如直接选择排序、堆排序) - 归并排序 - 分配排序(如箱排序、基数排序) **快速排序实现:** ```java public class QuickSort { public static void quickSort(int[] arr, int low, int high) { if (low < high) { int pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } } private static int partition(int[] arr, int low, int high) { int pivot = arr[high]; int i = (low - 1); // index of smaller element for (int j = low; j < high; j++) { // If current element is smaller than the pivot if (arr[j] < pivot) { i++; // swap arr[i] and arr[j] int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } // swap arr[i+1] and arr[high] (or pivot) int temp = arr[i + 1]; arr[i + 1] = arr[high]; arr[high] = temp; return i + 1; } public static void main(String[] args) { int[] array = {10, 7, 8, 9, 1, 5}; quickSort(array, 0, array.length - 1); System.out.println("Sorted array: "); for (int i : array) { System.out.print(i + " "); } } } ``` **总结:** - 快速排序是一种高效的排序算法,其核心思想是采用分治法来递归地将数组分为较小的子数组进行排序。 - 以上示例代码实现了快速排序的基本过程,包括分区操作和递归调用。 - 掌握快速排序有助于理解其他基于比较的排序算法,并能够根据具体情况进行灵活应用。
剩余24页未读,继续阅读
- ck_20362012-07-18题目很有帮助, 有指导意义
- 粉丝: 7
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助