zoukankan      html  css  js  c++  java
  • 131. Palindrome Partitioning

    package LeetCode_131
    
    /**
     * 131. Palindrome Partitioning
     * https://leetcode.com/problems/palindrome-partitioning/description/
     *
     * Given a string s, partition s such that every substring of the partition is a palindrome.
    Return all possible palindrome partitioning of s.
    
    Example:
    Input: "aab"
    Output:
    [
    ["aa","b"],
    ["a","a","b"]
    ]
     * */
    class Solution {
        private val result = ArrayList<ArrayList<String>>()
        /*
        * backtracking, Time complexity:O(2^n), Space complexity:O(n)
        * */
        fun partition(s: String): List<List<String>> {
            backtracking(0, s, ArrayList())
            return result
        }
    
        private fun backtracking(start: Int, s: String, cur: ArrayList<String>) {
            val n = s.length
            if (start == n) {
                val temp = ArrayList<String>(cur)
                result.add(temp)
                return
            }
            for (i in start until n) {
                //if s[start,i] is not palindrome, just go to s[start,i+1]
                if (!isPalindrome(s, start, i)) {
                    continue
                }
                cur.add(s.substring(start,i+1))
                backtracking(i + 1, s, cur)
                cur.removeAt(cur.size - 1)
            }
        }
    
        private fun isPalindrome(s: String, i_: Int, j_: Int): Boolean {
            var i = i_
            var j = j_
            while (i < j) {
                if (s[i] != s[j]) {
                    return false
                }
                i++
                j--
            }
            return true
        }
    }
  • 相关阅读:
    商务通代码
    Ubuntu 创建快捷方式的方法
    Linux安装Nginx
    Linux安装jdk10
    Mycat实现Mysql数据库读写分离
    Mysql主从复制
    SpringBoot整合Redis集群
    Redis集群环境搭建
    SpringBoot整合redis哨兵主从服务
    redis 哨兵机制环境搭建
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13020167.html
Copyright © 2011-2022 走看看