检查Java数组是否是某个元素的回文



我写了一个简单的方法来检查数组是否是某个元素的回文。问题是,我没有从该方法中得到任何输出。一定是出了什么问题。这是代码:

public static boolean isPalindrome(int[] arr, int start) {
if (arr.length == 0) { //empty array is a palindrome
return true;
}
//loop from start to the end of array
for (int i = start; i < arr.length; i++) {
//loop from end of array to start
for (int j = arr.length - 1; j >= start; j -= 1) {
if (arr[i] != arr[j]) {
return false;
}
}
}
return true;
}

我建议这样做:

for (int i = start; i < arr.length; i++)
{
int first = arr[i];
int second = arr[length - i - 1];
if (first != second) return false;
}
return true;

它没有两个嵌套循环,而是从前面和后面检查同一个数组。

单循环就足以完成这项任务,问题是您只需要循环到将要检查的数组的一半。

public static boolean isPalindrome(int[] arr, int start)
{

if (arr.length == 0) { //empty array is a palindrome
return true;
}
//loop from start to the half of array
for (int i = start; i < arr.length - arr.length / 2; i++) 
{
if (arr[i] != arr[arr.length - i - 1]) {
return false;   
}
}
return true;
}

试试这个。


public static boolean isPalindrome(int[] arr, int start){

if (arr.length == 0) { //empty array is a palindrome
return true;
}
int end = arr.length - 1;
while(start <= end){
if(arr[start] != arr[end]){
return false;
}
start++;
end--;
}
return true;
}

最新更新