您好,登錄后才能下訂單哦!
在Java中,要檢測包含復雜嵌套結構的回文數據,可以使用遞歸方法
import java.util.List;
public class PalindromeChecker {
public static void main(String[] args) {
// 測試用例
List<Object> complexList = List.of(1, "a", List.of(2, "b", List.of(3, "c", "d")), 4);
System.out.println("Is the complex list a palindrome? " + isPalindrome(complexList));
}
public static boolean isPalindrome(Object obj) {
if (obj == null) {
return true;
}
if (obj instanceof List) {
List<?> list = (List<?>) obj;
int left = 0;
int right = list.size() - 1;
while (left < right) {
Object leftElement = list.get(left);
Object rightElement = list.get(right);
if (!isPalindrome(leftElement)) {
return false;
}
if (!isPalindrome(rightElement)) {
return false;
}
left++;
right--;
}
return true;
} else {
return obj.equals(reverseObject(obj));
}
}
private static Object reverseObject(Object obj) {
if (obj instanceof String) {
return ((String) obj).reverse();
} else if (obj instanceof List) {
List<?> list = (List<?>) obj;
List<Object> reversedList = new ArrayList<>();
for (int i = list.size() - 1; i >= 0; i--) {
reversedList.add(reverseObject(list.get(i)));
}
return reversedList;
} else {
return obj;
}
}
}
在這個示例中,我們定義了一個名為isPalindrome
的方法,它接受一個Object
類型的參數。這個方法首先檢查傳入的對象是否為null
,如果是,則返回true
。接下來,我們檢查對象是否是一個列表,如果是,我們使用雙指針方法從列表的兩端開始遞歸地檢查每個元素是否為回文。如果所有元素都是回文,那么這個列表就是回文的。
如果對象不是列表,我們將其反轉并與原始對象進行比較。如果它們相等,那么這個對象就是回文的。為了反轉對象,我們定義了一個名為reverseObject
的輔助方法,它根據對象的類型(字符串或列表)進行相應的反轉操作。
在main
方法中,我們創建了一個包含復雜嵌套結構的列表complexList
,并調用isPalindrome
方法檢查它是否為回文。輸出結果為Is the complex list a palindrome? true
,表示這個復雜嵌套結構的列表是一個回文。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。