21xrx.com
2024-09-20 08:50:55 Friday
登录
文章检索 我的文章 写文章
我曾经认为学习Java编程是件十分困难的事情
2023-06-16 09:44:27 深夜i     --     --

我曾经认为学习Java编程是件十分困难的事情。然而,在我的实践经验中,我发现如果有针对性地进行学习,就能迅速提高自己的编程能力。下面我介绍一些经典的Java编程题和答案,希望能够帮助初学者解决一些常见的疑惑。

1. 反转字符串

这是一道非常简单的编程题,只需要用一个for循环遍历字符串,将每个字符与其对称位置上的字符交换即可。以下是代码:


String reverse(String s) {

  char[] arr = s.toCharArray();

  int len = arr.length;

  for (int i = 0; i < len / 2; i++) {

    char tmp = arr[i];

    arr[i] = arr[len - i - 1];

    arr[len - i - 1] = tmp;

  }

  return new String(arr);

}

2. 判断回文数

回文数是指正着读和反着读都一样的数字。判断一个数是否为回文数,可以将该数转为字符串,然后判断字符串是否为回文字符串。以下是代码:


boolean isPalindrome(int x) {

  String s = Integer.toString(x);

  int len = s.length();

  for (int i = 0; i < len / 2; i++) {

    if (s.charAt(i) != s.charAt(len - i - 1))

      return false;

    

  }

  return true;

}

3. 查找第K大的数

给定一个无序数组,求第K大的数。可以使用快排的思想,在每一轮比较后,将比第K大的元素放在左边,比第K小的元素放在右边。如果当前轮比较后,左边的元素个数小于K,则在右边的子数组中继续查找第K - left - 1大的数;否则在左边的子数组中继续查找第K大的数。以下是代码:


int findKthLargest(int[] nums, int k) {

  int left = 0, right = nums.length - 1;

  while (left <= right) {

    int pivot = partition(nums, left, right);

    if (pivot == k - 1) {

      return nums[pivot];

    } else if (pivot < k - 1) {

      left = pivot + 1;

    } else

      right = pivot - 1;

    

  }

  return -1;

}

int partition(int[] nums, int left, int right) {

  int pivot = nums[left];

  int l = left + 1, r = right;

  while (l <= r) {

    if (nums[l] < pivot && nums[r] > pivot) {

      swap(nums, l, r);

      l++;

      r--;

    }

    if (nums[l] >= pivot) {

      l++;

    }

    if (nums[r] <= pivot)

      r--;

    

  }

  swap(nums, left, r);

  return r;

}

void swap(int[] nums, int i, int j) {

  int tmp = nums[i];

  nums[i] = nums[j];

  nums[j] = tmp;

}

以上三道编程题都是Java面试中经常考到的内容,掌握了这些基础知识,就能够更快地适应Java编程。所以,我认为Java编程并不难学,只要多练习、多理解,就能够成为一名优秀的Java程序员。

  
  

评论区

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