21xrx.com
2024-12-27 19:30:01 Friday
登录
文章检索 我的文章 写文章
Java常见算法笔试题及解答
2023-06-17 10:10:40 深夜i     --     --
Java 算法 笔试题

Java作为一门编程语言,常见算法笔试题是面试中经常考察的重点。下面介绍几道常见的Java算法笔试题,并提供对应的Java代码案例。

一、反转字符串

题目描述:给定一个字符串s,将其反转。

解答过程:

1.先将字符串s转换为字符数组charArray

2.使用两个指针,分别指向数组的头部和尾部,互相交换两个指针所指的字符

3.重复以上步骤,直到头部指针大于等于尾部指针

Java代码:

public static String reverseString(String s) {

  char[] charArray = s.toCharArray();

  int begin = 0;

  int end = charArray.length-1;

  while(begin < end){

    char temp = charArray[begin];

    charArray[begin] = charArray[end];

    charArray[end] = temp;

    begin++;

    end--;

  }

  return new String(charArray);

}

二、判断一个整数是否是回文数

题目描述:给定一个整数x,判断它是否是回文数。

解答过程:

1.将整数转换为字符串s

2.将字符串s反转,得到一个新的字符串rev

3.比较s和rev是否相等,相等则是回文数,不相等则不是回文数

Java代码:

public static boolean isPalindrome(int x) {

  if(x < 0)

    return false;

  String s = Integer.toString(x);

  String rev = reverseString(s);

  return s.equals(rev);

}

三、寻找两个有序数组的中位数

题目描述:给定两个有序数组nums1和nums2,长度分别为m和n。找出这两个有序数组的中位数。

解答过程:

1.将两个有序数组合并成一个有序数组

2.如果数组总长度是奇数,中位数为数组中间的数;如果数组总长度是偶数,中位数为数组中间两个数的平均值。

Java代码:

public static double findMedianSortedArrays(int[] nums1, int[] nums2) {

  int m = nums1.length;

  int n = nums2.length;    

  int[] nums = new int[m+n];

  int i = 0, j = 0, k = 0;

  while(i < m && j < n){

    if(nums1[i] < nums2[j]){

      nums[k++] = nums1[i++];

    }else{

      nums[k++] = nums2[j++];

    }

  }

  while(i < m){

    nums[k++] = nums1[i++];

  }

  while(j < n){

    nums[k++] = nums2[j++];

  }

  if((m+n)%2 == 0){

    return (nums[(m+n)/2-1] + nums[(m+n)/2])/2.0;

  }else{

    return nums[(m+n)/2];

  }   

}

生成的三个关键词:

Java、算法、笔试题

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复