Java经典编程50题(面试笔试机试)

您所在的位置:网站首页 程序员笔试题目题库 Java经典编程50题(面试笔试机试)

Java经典编程50题(面试笔试机试)

2024-07-15 19:50| 来源: 网络整理| 查看: 265

首先感谢两位同学的分享:

https://blog.csdn.net/alias_fa/article/details/52985112

https://blog.csdn.net/wenzhi20102321/article/details/52274976/

这里用Java特有的更简洁的方式去解答这些题目

Java 特有解法(正常解法放一起)

特别注意日期创建的月份需要-1

代码语言:txt复制 /** 回文数 */ public static boolean palindrome(int num) { String str = String.valueOf(num); String reverse = new StringBuilder(str).reverse().toString(); return str.equals(reverse); } public static boolean isPalindrome(int x) { int t = 0; while (x > t) { t = t * 10 + x % 10; // 从后往前取出 if (t == 0) return false; // 末尾为 0 肯定不是 x /= 10; // 从后往前去除 } return (x == t || x == t / 10); // 偶位相等和奇位相等 } /** * 07 输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。 * 0-9:48-57 A-Z:65-90 a-z:97-122 space:32 */ public static int abcNum(String s) { return s.length() - s.replaceAll("[a-zA-Z]", "").length(); } public static int numNum(String s) { return s.length() - s.replaceAll("\\d", "").length(); } public static int spaceNum(String s) { return s.length() - s.replaceAll(" ", "").length(); } public static int otherNum(String s) { return s.length() - s.replaceAll("[^a-zA-Z\\d ]", "").length(); } /** 14 输入某年某月某日,判断这一天是这一年的第几天? */ public static int dayOfYearByDateFormat(int year, int month, int day) { SimpleDateFormat sdf = new SimpleDateFormat("DDD"); return Integer.parseInt(sdf.format(new Date(year, month - 1, day))); } public static int dayOfYearByCalendar(int year, int month, int day) { Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, day); return calendar.get(Calendar.DAY_OF_YEAR); } public static int[] sortByArrays(int... arr) { Arrays.sort(arr); return arr; } public static Integer[] reverseSortByArrays(Integer... arr) { Arrays.sort(arr, (x, y) -> y - x); return arr; } /** * 24 给一个不多于5位的正整数,要求: * 一、求它是几位数,二、逆序打印出各位数字。 */ public static String[] d(int num) { String s = new StringBuilder(String.valueOf(num)).reverse().toString(); return new String[]{String.valueOf(s.length()), s}; } /** 31 将一个数组逆序输出。 */ public static Integer[] resversedInteger(Integer[] arr) { List list = Arrays.asList(arr); Collections.reverse(list); return list.toArray(new Integer[arr.length]); } public static int[] resversedArray(int[] arr) { int[] ints = new int[arr.length]; for (int i = 0; i < arr.length; i++) { ints[i] = arr[arr.length - i - 1]; } return ints; } /** * 32 取一个整数a从右端开始的4~7位。 * int 最大10位够用了 */ public static int intSub(int num, int start, int end) { String s = String.valueOf(num); String substring = s.substring(s.length() - end, s.length() - start + 1); return Integer.parseInt(substring); } /** * 36 有n个整数,使其前面各数顺序向后移m个位置, * 最后m个数变成最前面的m个数 */ public static int[] moveSys(int[] arr, int m) { int[] resultArr = new int[arr.length]; System.arraycopy(arr, 0, resultArr, m, arr.length - m); System.arraycopy(arr, arr.length - m, resultArr, 0, m); return resultArr; } public static int[] move(int[] arr, int m) { int[] resultArr = new int[arr.length]; for (int i = m; i < arr.length; i++) { resultArr[i] = arr[i - m]; } for (int i = 0; i < m; i++) { resultArr[i] = arr[arr.length - m + i]; } return resultArr; } /** * 使用正则需要考虑元字符 * 49 计算字符串中子串出现的次数 */ public static int strNum(String str, String s) { int count = 0; int i; while ((i = str.indexOf(s)) >= 0) { str = str.substring(i + s.length()); count++; } return count; }Java8 特有解法代码语言:txt复制 /** * 14 输入某年某月某日,判断这一天是这一年的第几天? * @since JDK 1.8 */ public static int dayOfYearByLocalDate(int year, int month, int day) { LocalDate date = LocalDate.of(year, month, day); return date.getDayOfYear(); } public static int[] sort(int... arr) { return IntStream.of(arr).sorted().toArray(); } public static int[] reverseSort(int... arr) { return IntStream.of(arr).boxed() .sorted(Comparator.reverseOrder()) .mapToInt(e -> (int) e) .toArray(); } /** * 35 输入数组, * 最大的与第一个元素交换, * 最小的与最后一个元素交换, */ public static Double[] startMaxEndMin(Double[] arr) { Stream stream = Arrays.stream(arr); Double max = stream.max(Double::compareTo).get(); Double min = stream.min(Double::compareTo).get(); int i = Arrays.asList(arr).indexOf(max); arr[i] = arr[0]; arr[0] = max; // 被交换了得重新转 int j = Arrays.asList(arr).indexOf(min); arr[j] = arr[arr.length - 1]; arr[arr.length - 1] = max; return arr; } /** * 39 编写一个函数, * 输入n为偶数时,调用函数求1/2+1/4+...+1/n, * 当输入n为奇数时,调用函数1/1+1/3+...+1/n */ public static double fun(int n) { return n % 2 == 0 ? even(n) : odd(n); } private static double even(int n) { return IntStream.rangeClosed(1, n / 2) .mapToDouble(e -> 1 / (2 * (double) e)) .reduce((i, j) -> i + j) .orElse(0); } private static double odd(int n) { return IntStream.rangeClosed(1, (n + 1) / 2) .mapToDouble(e -> 1 / (2 * (double) e - 1)) .reduce((i, j) -> i + j) .orElse(0); } /** TODO 用 int 就会把结果也强转为 int */ private static double even1(int n) { double sum = 0; for (double i = 2; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3