Leetcode047--所有迴文子串的組合
一、原題
Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
For example, given s ="aab",
Return
[ ["aa","b"], ["a","a","b"] ]
一、中文
找到一個字串中所有可能的迴文子字串的組合
三、舉例
比如字串aab,就可以分成 "aa" "b" 和 "a" "a" "b" 兩種情況
四、思路
首先要編寫一個函式,判斷這個函式是否是迴文串,然後就可以方便的呼叫這個函數了。然後就是遍歷字串了,如果字串從0到第i個位置是一個迴文串,然後再使用遞迴的方式判斷後邊的字串,直到字串的長度為0了就可以了,這個list中就是一套完整的方案了,然後將這個list裝入res集合中,依次這樣遞迴,最後返回就可以了。
五、程式
import java.util.*; public class Solution { public ArrayList<ArrayList<String>> partition(String s) { ArrayList<ArrayList<String>> res = new ArrayList<>(); ArrayList<String> list = new ArrayList<>(); addPalin(res,list,s); return res; } public static void addPalin(ArrayList<ArrayList<String>> result,ArrayList<String> list,String s){ //當list==0的時候也就是說明這個字串已經按照相應的的序列分好了 //此時可以將其加進去了 if(s.length() == 0){ result.add(new ArrayList<String>(list)); } for(int i = 1; i <= s.length(); i++){ if(!isPali(s.substring(0,i))){ continue; } //這裡是從下標0-(i-1)的子串 list.add(s.substring(0,i)); //這裡是從下標i開始的子串 addPalin(result,list,s.substring(i)); //這裡的移除是為了重新裝入新的字串 list.remove(list.size()-1); } } public static boolean isPali(String str){ int i = 0; int j = str.length()-1; while(i < j){ if(str.charAt(i) != str.charAt(j)){ return false; } i++; j--; } return true; } }
相關推薦
Leetcode047--所有迴文子串的組合
一、原題 Given a string s, partition s such that every substring of the partition is a palindr
LeetCode:647. Palindromic Substrings(找出字串中所有的迴文子串)
Given a string, your task is to count how many palindromic substrings in this string. The substrings with
leetcode5:Longest Palindromic Substring最長迴文子串
python版: class Solution: def longestPalindrome(self, s): """ :type s: str :rtype: str """ start = en
【HDU - 3068】最長迴文(Manacher演算法,馬拉車演算法求最長迴文子串)
題幹: 給出一個只由小寫英文字元a,b,c...y,z組成的字串S,求S中最長迴文串的長度. 迴文就是正反讀都是一樣的字串,如aba, abba等 Input 輸入有多組case,不超過120組,每組輸入為一行小寫英文字元a,b,c...y,z組成的字串S 兩
最長迴文子串DP
給定一個字串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為1000。 示例 1: 輸入: "babad" 輸出: "bab" 注意: "aba"也是一個有效答案。 示例 2: 輸入: "cbbd" 輸出: "bb" 分析:dp dp[ j ][ i
【探索-中級演算法】最長迴文子串
這一題可以參考:647. 迴文子串 本質上是一樣的,要判斷出所有的迴文字串,然後找到其中最長的那一個。 中心擴充套件法 中心擴充套件就是把給定的字串的每一個字母當做中心,向兩邊擴充套件,這樣來找最長的子迴文串。演算法複雜度為O(N^2) public Stri
【LeetCode】647. 迴文子串
題目連結:https://leetcode-cn.com/problems/palindromic-substrings/description/ 題目描述 給定一個字串,你的任務是計算這個字串中有多少個迴文子串。 具有不同開始位置或結束位置的子串,即使是由相同的字元組成,也
LeetCode5最長迴文子串
這兩天被這個題弄得是有些崩潰了,因為之前試的兩種方法都是超時了,所以弄得後面都有些不想弄了。還好有度娘,最後用的是從中間往兩邊擴充套件的方法得此解決,真的是如釋重負啊!廢話不說,講正文貼程式碼。 題目如下: 給定一個字串 s,找到 s 中最長的迴文子串。你可以假
最長迴文子串(Longest Palindromic Substring)
題目描述: 給出一個字串(假設長度最長為1000),求出它的最長迴文子串,你可以假定只有一個滿足條件的最長迴文串。 樣例 給出字串 "abcdzdcab",它的最長迴文子串為 "cdzdc"。 挑戰 O(n2) 時間複雜度的演算法是可以接受的,如果你
演算法學習——尋找字串中的最長迴文子串
文章轉載自公眾號《網際網路偵查》 /** * @author xiaoshi on 2018/9/24. * Happy Mid-Autumn Festival */ public class PlalindromeString { // 判斷一個字串是否迴文,演算法中用
LeetCode 5最長迴文子串(java程式碼)
方法一:動態規劃 定義P(i,j):如果字串從i位置到j位置是迴文,P(i,j)=true;否則,P(i,j)=false; 那麼P(i,j)= P(i+1,j−1) && Si==Sj &
leetcode 5最長的迴文子串
‘’’ 給定一個字串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為1000。 示例 1: 輸入: “babad” 輸出: “bab” 注意: "aba"也是一個有效答案。 示例 2: 輸入: “cbbd” 輸出: “bb” ‘’’ class Solution
最大連續子序列和/最長不下降子序列/最長公共子序列/最長迴文子串
//最大連續子序列和 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 10010; int A[maxn],dp[maxn]; int main(){ int
最長迴文子串--演算法思想探討和實現(python java)
最長迴文子串–演算法思想探討和實現(python java) 迴文串定義: 如果一個字串正著讀和反著讀是一樣的,那它就是迴文串。 下面是一些迴文串的例項: 12321 a aba abba aaaa tattarrattat 問題定義 最長迴
leetcode5:最長迴文子串
1 題目 給定一個字串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為1000。 示例 1: 輸入: “babad” 輸出: “bab” 注意: "aba"也是一個有效答案。 示例 2: 輸入: “cbbd” 輸出: “bb” 題目連結: https
leetcode演算法題—golang—最長迴文子串(題5)
題目:最長迴文子串 給定一個字串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為1000。 示例 1: 輸入: "babad" 輸出: "bab" 注意: "aba"也是一個有效答案。 示例 2: 輸入: "cbb
LetCode: 5. 最長迴文子串
提示 LintCode中的相關演算法題實現程式碼,可以在我的GithHub中下載。 題目需求 給定一個字串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為1000。 示例 1: 輸入: "babad" 輸出: "ba
Leetcode 336. Palindrome Pairs 給出一種遍歷字串迴文子串中心的方法
題意 給你n個不同的字串,讓你找出所有的字串對(i, j),使得s(i) + s(j)是迴文串且i不等於j 思路 這題沒有給資料範圍,所以你其實不知道應該給什麼複雜度的演算法,我看了眼Discussion,先確定了下需要的複雜度 複雜度是O(n *
leetcode-5-最長迴文子串(longest palindromic substring)-java
題目及測試 package pid005; /*最長迴文子串 給定一個字串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為1000。 示例 1: 輸入: "babad" 輸出: "bab" 注意: "aba"也是一個有效答案。 示例 2: 輸入: "cbbd" 輸出:
馬拉車演算法(求最長迴文子串)
1 #include <vector> 2 #include <iostream> 3 #include <string> 4 5 using namespace std; 6 7 string Manacher(string s) {