• Palindrome Partitioning II


    1. Title

    Palindrome Partitioning II

    2. Http address

    https://leetcode.com/problems/palindrome-partitioning-ii/

    3. The question

    Given a string s, partition s such that every substring of the partition is a palindrome.

    Return the minimum cuts needed for a palindrome partitioning of s.

    For example, given s = "aab",
    Return 1 since the palindrome partitioning ["aa","b"] could be produced using 1 cut.

    Subscribe to see which companies asked this question

    4. My code (AC)

     1     // Accepted
     2     public static int minCut(String s) {
     3         
     4         if ( s == null || s.length() <= 1)
     5             return 0;
     6         int len = s.length();
     7         boolean isPalindrome[][] = new boolean[len][len];
     8         int opt [] = new int[len];
     9         for(int i = 0 ; i < len; i++)
    10         {
    11             isPalindrome[i][i] = true;
    12         }
    13         
    14         for(int i = 0 ; i < len - 1; i++)
    15         {
    16             if ( s.charAt(i) == s.charAt(i+1)){
    17                 isPalindrome[i][i+1] = true;
    18             }
    19         }
    20         
    21         for( int i = len - 3; i >=0 ; i--)
    22         {
    23             for( int j = i + 2; j < len; j++)
    24             {
    25                 if( s.charAt(i) == s.charAt(j) && isPalindrome[i+1][j-1])
    26                 {
    27                     isPalindrome[i][j] = true;
    28                 }
    29             }
    30         }
    31         
    32         opt[len-1] = 0;
    33         for( int i = len -2; i >= 0 ; i--)
    34         {
    35             if ( isPalindrome[i][len-1] == true){
    36                 System.out.println(i + " is " + true);
    37                 opt[i] = 0;
    38                 continue;
    39             }
    40             opt[i] = 1 + opt[i+1];
    41             System.out.println(i + ": "  + opt[i]);
    42             for( int k = i + 1; k < len - 1; k++)
    43             {
    44                 if( isPalindrome[i][k])
    45                 {
    46                     opt[i] = Math.min(opt[i], opt[k+1] + 1);
    47                 }
    48             }
    49         }
    50         return opt[0];
    51     }
  • 相关阅读:
    .sorted关键字进行比较排序
    Groovy
    Java8部分特性及list的常见操作
    小鹅通(公众号)视频下载
    angular webpack发布后如何调试代码
    收缩数据库日志文件
    设计模式 行为型之王 模板方法模式
    nginx 正向代理与反正代理的区别及简单配置
    nginx 基本操作
    Docker Compose安装Nginx和PHP7环境
  • 原文地址:https://www.cnblogs.com/ordili/p/4928506.html
Copyright © 2020-2023  润新知