当前位置: 首页 > news >正文

LeetCode:131. 分割回文串(DP Java)

目录

131. 分割回文串

题目描述:

实现代码与解析:

动态规划

原理思路:


131. 分割回文串

题目描述:

        给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

示例 1:

输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]

示例 2:

输入:s = "a"
输出:[["a"]]

提示:

  • 1 <= s.length <= 16
  • s 仅由小写英文字母组成

实现代码与解析:

动态规划

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    private int n;
    private boolean[][] f;
    private List<List<String>> res = new ArrayList<>();
    private List<String> list = new ArrayList<>();
    public List<List<String>> partition(String s) {

        n = s.length();
        f = new boolean[n][n];
        for (int i = 0; i < n; i++) {
            Arrays.fill(f[i], true);
        }
        for (int i = n -1; i >= 0; i--) {
            for (int j = i + 1; j < n; j++) {
                if (s.charAt(i) == s.charAt(j) && f[i + 1][j - 1]) {
                    f[i][j] = true;
                } else {
                    f[i][j] = false;
                }
            }
        }
        dfs(s, 0);
        return res;
    }

    private void dfs(String s, int cur) {

        if (cur == n) {
            res.add(new ArrayList<String>(list));
            return ;
        }

        for (int i = cur; i < n; i++) {
            if (f[cur][i]) {
                list.add(s.substring(cur, i + 1));
                dfs(s, i + 1);
                list.remove(list.size() - 1);
            }
        }

    }


}

原理思路:

        C++版Leetcode:131. 分割回文串(C++)_代码backtrack(s, 0)是什么意思-CSDN博客,

        f[i][j]含义是:下标 i 到 j 字符串是否为回文。单个字母也为回文,所以初始化true。判断如果char[i] == char[j] 并且 f[i + 1][j - 1]为true,说明f [ i ] [ j ] 为回文。

        然后dfs遍历即可。同时用 f 剪枝。

相关文章:

  • 8 - PS XADC接口实验
  • Java 大视界 -- Java 大数据机器学习模型的可解释性增强技术与应用(107)
  • nist关于rsa中p,q的要求
  • 【数据挖掘】Pandas
  • 【开源免费】基于SpringBoot+Vue.JS网络海鲜市场系统(JAVA毕业设计)
  • 看得见摸得着的AI:具身智能
  • 【Java】多线程篇
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_fd_info
  • redis slaveof 命令 执行后为什么需要清库重新同步
  • 阿里云oss文件上传springboot若依java
  • 用C语言实现一个链表(四)
  • 深度学习原理与Pytorch实战
  • VS Code 如何搭建CC++开发环境
  • 【C语言】字符函数与字符串函数
  • 【动手实验】TCP半连接队列、全连接队列实战分析
  • 军事理论综合版参考答案
  • 计算机三级网络技术备考(3)
  • 大白话React 虚拟 DOM,好处在哪里?跟vue有什区别
  • Linux上用C++和GCC开发程序实现两个不同MySQL实例下单个Schema稳定高效的数据迁移到其它MySQL实例
  • Linux 检测内存泄漏方法总结
  • 如何查询网站icp备案/外贸网站建设推广公司
  • 杭州城乡建设委员会的网站/公司网站搭建
  • 寿县移动公司网站建设/做网站需要准备什么
  • 网站建设能/站长基地
  • 商城网站建设方案流程/什么推广方式能快速引流
  • 各省网站备案时长/免费个人网站注册