zoukankan      html  css  js  c++  java
  • [LeetCode] 131. 分割回文串

    首先标记出所有的回文子串。boolean f[i][j]表示下标[i,j]构成的子串是回文串。

    使用中心扩展法来算出整个f数组:枚举每一个下标为回文串的中心,然后逐渐向两边尽可能的扩展。最终O(n^2)跑完f数组。

    然后使用dfs枚举出所有可能性

    粗心了一下,可惜没有1A

    class Solution {
        public List<List<String>> partition(String s) {
            int n = s.length();
    
            boolean f[][] = new boolean[n][n];
            for (int i = 0; i < n; i++) {
                f[i][i] = true;
            }
    
            for (int i = 0; i < n; i++) {
                int l = i - 1;
                int r = i + 1;
                while (l >= 0 && r < n) {
                    if (s.charAt(l) == s.charAt(r)) {
                        f[l][r] = true;
                    } else {
                        break;
                    }
                    l--;
                    r++;
                }
    
                l = i;
                r = i + 1;
                while (l >= 0 && r < n) {
                    if (s.charAt(l) == s.charAt(r)) {
                        f[l][r] = true;
                    } else {
                        break;
                    }
                    l--;
                    r++;
                }
            }
    
            List<List<String>> ans = new ArrayList<>();
            dfs(ans, new ArrayList<>(), f, 0, n, s);
    
            return ans;
        }
    
        private void dfs(List<List<String>> ans, List<String> cur, boolean f[][], int k, int n,
                String s) {
            if (k == n) {
                ans.add(cur);
                return;
            }
    
            for (int i = k; i < n; i++) {
                if (f[k][i]) {
                    List<String> next = new ArrayList<>(cur);
                    next.add(s.substring(k, i + 1));
                    dfs(ans, next, f, i + 1, n, s);
                }
            }
        }
    }
    
  • 相关阅读:
    测试工程师入门要了解什么?(四)
    测试工程师入门要了解什么?(三)
    测试工程师入门要了解什么?(二)
    测试工程师入门要了解什么?(一)
    测试工程师专业术语
    测试场景标准库
    猜数字
    遍历
    python基础
    python class1
  • 原文地址:https://www.cnblogs.com/acbingo/p/14856944.html
Copyright © 2011-2022 走看看