91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Java實現基于哈希表的快速回文子串查找

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

在Java中,我們可以使用哈希表來優化快速回文子串查找。以下是一個使用哈希表實現的Java方法,用于查找給定字符串中所有回文子串:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PalindromeSubstringFinder {

    public static void main(String[] args) {
        String input = "babad";
        List<String> palindromes = findAllPalindromes(input);
        System.out.println("All palindrome substrings of \"" + input + "\": " + palindromes);
    }

    public static List<String> findAllPalindromes(String s) {
        List<String> result = new ArrayList<>();
        if (s == null || s.length() == 0) {
            return result;
        }

        Map<Integer, String> map = new HashMap<>();
        int n = s.length();

        for (int i = 0; i < n; i++) {
            // Odd length palindromes
            expandAroundCenter(s, i, i, map, result);
            // Even length palindromes
            expandAroundCenter(s, i, i + 1, map, result);
        }

        return result;
    }

    private static void expandAroundCenter(String s, int left, int right, Map<Integer, String> map, List<String> result) {
        while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
            int hash = getHash(s, left, right);
            if (!map.containsKey(hash) || map.get(hash).length() == 0) {
                map.put(hash, s.substring(left, right + 1));
                result.add(s.substring(left, right + 1));
            }
            left--;
            right++;
        }
    }

    private static int getHash(String s, int left, int right) {
        int base = 131;
        int hash = 0;
        for (int i = left; i <= right; i++) {
            hash = hash * base + s.charAt(i);
        }
        return hash;
    }
}

這個方法首先遍歷字符串的每個字符,然后以該字符為中心向兩邊擴展,查找奇數長度的回文子串。接著,以當前字符及其右側字符為中心向兩邊擴展,查找偶數長度的回文子串。在擴展過程中,我們使用哈希表存儲已經找到的回文子串,以避免重復添加。

注意:這個方法可能會產生大量的哈希沖突,因此在實際應用中可能需要進一步優化哈希函數或使用其他數據結構來存儲回文子串。

向AI問一下細節

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

AI

三明市| 苍溪县| 无棣县| 肥西县| 宝兴县| 博白县| 乌兰浩特市| 康平县| 华阴市| 县级市| 新龙县| 平和县| 昭觉县| 西青区| 宜兰县| 上饶县| 隆尧县| 大悟县| 长阳| 天峨县| 海兴县| 嘉禾县| 蓝田县| 嘉祥县| 宜昌市| 云阳县| 凤山县| 酒泉市| 两当县| 峨边| 宿州市| 厦门市| 房产| 四子王旗| 泾川县| 二连浩特市| 渭源县| 中牟县| 五台县| 浦城县| 米泉市|