admin 管理员组

文章数量: 1087135


2024年5月31日发(作者:mysql建立学生表代码)

java逻辑思维题含详解共5道

1. 题目:翻转字符串

编写一个 Java 函数,接受一个字符串作为输入,并返回该字符串的反转版本。

```java

public class ReverseString {

public static String reverse(String input) {

char[] chars = Array();

int start = 0, end = - 1;

while (start < end) {

char temp = chars[start];

chars[start] = chars[end];

chars[end] = temp;

start++;

end--;

}

return new String(chars);

}

public static void main(String[] args) {

String original = "Hello, World!";

String reversed = reverse(original);

n("Original: " + original);

n("Reversed: " + reversed);

}

}

```

详解: 该程序使用双指针法,从字符串的两端开始,依次交换字符,直到两个指针相遇。

这样就能够得到字符串的反转版本。

2. 题目:判断回文数

编写一个 Java 函数,判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从

右向左)读都是一样的整数。

```java

public class PalindromeNumber {

public static boolean isPalindrome(int number) {

String str = f(number);

return (new StringBuilder(str).reverse().toString());

}

public static void main(String[] args) {

int num1 = 121;

int num2 = -121;

n(num1 + " is palindrome: " + isPalindrome(num1));

n(num2 + " is palindrome: " + isPalindrome(num2));

}

}

```

详解: 该程序将整数转换为字符串,然后比较正序和倒序的字符串是否相等,从而判断是

否是回文数。

3. 题目:找出数组中重复的数字

给定一个整数数组,找出其中重复的数字。

```java

public class FindDuplicate {

public static int findDuplicate(int[] nums) {

HashSet set = new HashSet<>();

for (int num : nums) {

if (!(num)) {

return num;

}

}

return -1; // 如果数组中没有重复元素

}

public static void main(String[] args) {

int[] array = {1, 3, 4, 2, 2};

n("Duplicate number: " + findDuplicate(array));

}

}

```

详解: 使用 HashSet 来记录遍历过的元素,如果发现某个元素已经在 HashSet 中,则说

明是重复元素。

4. 题目:斐波那契数列

编写一个 Java 函数,输出斐波那契数列的前 n 项。

```java

public class Fibonacci {

public static void printFibonacci(int n) {

int a = 0, b = 1;

(a + " " + b + " ");

for (int i = 2; i < n; i++) {

int next = a + b;

(next + " ");

a = b;

b = next;

}

}

public static void main(String[] args) {

int n = 10;

n("Fibonacci sequence up to " + n + " terms:");

printFibonacci(n);

}

}

```

详解: 使用两个变量 `a` 和 `b` 来迭代生成斐波那契数列。

5. 题目:寻找两个有序数组的中位数

给定两个大小为 m 和 n 的有序数组 `nums1` 和 `nums2`,请找出这两个有序数组的中位

数。

```java

public class FindMedian {

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

int[] merged = mergeArrays(nums1, nums2);

int length = ;

if (length % 2 == 0) {

int mid1 = merged[length / 2 - 1];

int mid2 = merged[length / 2];

return (double) (mid1 + mid2) / 2;

} else {

return merged[length / 2];

}

}

private static int[] mergeArrays(int[] nums1, int[] nums2) {

int[] result = new int[ + ];

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

while (i < && j < ) {

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

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

} else {

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

}

}

while (i < ) {

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

}

while (j < ) {

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

}

return result;

}

public static void main(String[] args) {

int[] nums1 = {1, 3};

int[] nums2 = {2};

n("Median: " + findMedianSortedArrays(nums1, nums2));

}

}

```

详解: 将两个有序数组合并成一个有序数组,然后根据数组长度的奇偶性来计算中位数。

这些题目涉及到了字符串翻转、回文数判断、数组查找等基本的逻辑思考,同时也考察了一

些基本的算法和数据结构知识。希望这些详细解答对你有帮助!


本文标签: 数组 字符串 有序 元素 题目