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
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));
}
}
```
详解: 将两个有序数组合并成一个有序数组,然后根据数组长度的奇偶性来计算中位数。
这些题目涉及到了字符串翻转、回文数判断、数组查找等基本的逻辑思考,同时也考察了一
些基本的算法和数据结构知识。希望这些详细解答对你有帮助!
版权声明:本文标题:java逻辑思维题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1717129890a701679.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论