亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java實現基于字典樹的回文串檢測

發布時間:2024-11-11 17:23:45 來源:億速云 閱讀:78 作者:小樊 欄目:編程語言

在Java中,我們可以使用字典樹(Trie)數據結構來實現基于字典樹的回文串檢測

class TrieNode {
    TrieNode[] children = new TrieNode[26];
    boolean isEndOfWord = false;
}

public class PalindromeChecker {
    private TrieNode root;

    public PalindromeChecker() {
        root = new TrieNode();
    }

    public void insert(String word) {
        TrieNode node = root;
        for (char c : word.toCharArray()) {
            int index = c - 'a';
            if (node.children[index] == null) {
                node.children[index] = new TrieNode();
            }
            node = node.children[index];
        }
        node.isEndOfWord = true;
    }

    public boolean isPalindrome(String word) {
        TrieNode node = search(word);
        return isPalindromeHelper(node, 0, word.length() - 1);
    }

    private TrieNode search(String word) {
        TrieNode node = root;
        for (char c : word.toCharArray()) {
            int index = c - 'a';
            if (node.children[index] == null) {
                return null;
            }
            node = node.children[index];
        }
        return node;
    }

    private boolean isPalindromeHelper(TrieNode node, int start, int end) {
        if (start >= end) {
            return true;
        }
        if (node.isEndOfWord) {
            return isPalindromeHelper(root, start + 1, end - 1);
        }
        if (node.children[0] != null && node.children[0].isEndOfWord) {
            return isPalindromeHelper(node.children[0], start, end - 1);
        }
        if (node.children[1] != null && node.children[1].isEndOfWord) {
            return isPalindromeHelper(node.children[1], start + 1, end);
        }
        return false;
    }

    public static void main(String[] args) {
        PalindromeChecker checker = new PalindromeChecker();
        checker.insert("ababa");
        System.out.println(checker.isPalindrome("ababa")); // 輸出: true
        System.out.println(checker.isPalindrome("abcba")); // 輸出: true
        System.out.println(checker.isPalindrome("hello")); // 輸出: false
    }
}

在這個實現中,我們首先創建了一個TrieNode類來表示字典樹的節點。然后,我們創建了一個PalindromeChecker類,其中包含一個字典樹的根節點以及插入和檢測回文串的方法。

insert方法用于將單詞插入字典樹。isPalindrome方法首先使用search方法找到給定單詞的最后一個字符對應的節點,然后調用isPalindromeHelper方法遞歸地檢查從兩端到中間的所有字符是否形成回文串。

isPalindromeHelper方法是一個遞歸方法,它檢查從給定節點開始的兩端字符是否形成回文串。如果遇到以元音結尾的單詞,它會跳過該元音字符。如果所有字符都形成回文串,則返回true,否則返回false。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

娱乐| 佛冈县| 图木舒克市| 漾濞| 台中县| 白河县| 南澳县| 兴和县| 曲松县| 天门市| 鄯善县| 四会市| 白水县| 兴城市| 来凤县| 榕江县| 宜兴市| 若尔盖县| 房山区| 英山县| 博湖县| 临城县| 湖州市| 如东县| 定州市| 关岭| 正定县| 墨玉县| 景洪市| 梧州市| 曲阜市| 吉安市| 婺源县| 霍林郭勒市| 安吉县| 新乐市| 沂水县| 秦皇岛市| 太白县| 武城县| 蓬安县|