21xrx.com
2024-05-20 17:42:57 Monday
登录
文章检索 我的文章 写文章
Java 算法面试题合集
2024-05-10 02:40:03 深夜i     --     --
Java算法 面试题 合集 算法问题 编程挑战

Java算法面试题合集

算法是计算机科学的核心领域之一,对于希望从事软件开发工作的人来说,掌握算法是极为重要的。特别是在面试过程中,算法能力常常是面试官评估候选人的重要指标之一。本文将介绍一些常见的Java算法面试题,帮助读者在面试中脱颖而出。

1. 反转字符串

题目:给定一个字符串,编写一个Java程序将其反转。

解答:

使用两个指针,一个指向字符串的开头,一个指向字符串的结尾。通过交换两个指针指向的字符,直到两个指针相遇。代码如下:


public String reverseString(String s) {

  char[] str = s.toCharArray();

  int i = 0;

  int j = str.length - 1;

  while (i < j) {

    char temp = str[i];

    str[i] = str[j];

    str[j] = temp;

    i++;

    j--;

  }

  return new String(str);

}

2. 验证回文串

题目:给定一个字符串,编写一个Java程序判断它是否为回文串。回文串是指正着读和倒着读都一样的字符串。

解答:

使用两个指针,一个指向字符串的开头,一个指向字符串的结尾。通过依次比较两个指针指向的字符是否相等,直到两个指针相遇或者找到不相等的字符。代码如下:


public boolean isPalindrome(String s) {

  char[] str = s.toCharArray();

  int i = 0;

  int j = str.length - 1;

  while (i < j) {

    if (!Character.isLetterOrDigit(str[i])) {

      i++;

      continue;

    }

    if (!Character.isLetterOrDigit(str[j]))

      j--;

      continue;

    

    if (Character.toLowerCase(str[i]) != Character.toLowerCase(str[j]))

      return false;

    

    i++;

    j--;

  }

  return true;

}

3. 找出两个数组中的共同元素

题目:给定两个整数数组,编写一个Java程序找出它们的共同元素。

解答:

使用两个指针分别指向两个数组的开头,通过比较指针指向的元素的大小,移动指针直到找到共同元素。代码如下:


public List<Integer> findCommonElements(int[] nums1, int[] nums2) {

  List<Integer> result = new ArrayList<>();

  Arrays.sort(nums1);

  Arrays.sort(nums2);

  int i = 0;

  int j = 0;

  while (i < nums1.length && j < nums2.length) {

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

      i++;

    } else if (nums1[i] > nums2[j]) {

      j++;

    } else {

      result.add(nums1[i]);

      i++;

      j++;

    }

  }

  return result;

}

以上是几个常见的Java算法面试题,希望对读者在面试过程中有所帮助。通过熟练掌握常见算法题,能够展示出自己的编码能力和问题解决能力,提高自己在面试中的竞争力。

  
  

评论区

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