力扣(LeetCode)-131 分割字符串

本題考察的是深度優(yōu)先搜索+回溯+回文串判斷

題目描述

給定一個字符串 s原叮,將 s 分割成一些子串,使每個子串都是回文串符匾。
返回 s 所有可能的分割方案蕴潦。
示例:
輸入: "aab"
輸出:
[
["aa","b"],
["a","a","b"]
]

題目思考+算法分析

1.本題需要將所有的分割方法都找出來,所以肯定需要用到DFS(深度優(yōu)先搜索)或者BFS(廣度優(yōu)先搜索)
2.每一個字符串都可以分為兩部分:左邊一個回文串加右邊一個子串汪榔,比如"abc"可分為"a"+"bc"蒲拉。然后對"bc"分割仍然是同樣的方法,分為"b"+"c"痴腌。
3.優(yōu)先尋找更短的回文串雌团,然后回溯找稍微長一些的回文串分割方法,不斷回溯士聪,分割锦援,直到找到所有的分割方法。
比如剥悟,分割"aac"灵寺,
(1)分割為 a + ac
(2)分割為 a + a+ c,分割完成懦胞,得到一組結果替久,回溯到a+ ac
(3)a+ ac中ac不是回文串,繼續(xù)回溯躏尉,回溯到 aac
(4)分割為稍長的回文串蚯根,分割為 aa+c 分割完成得到一組結果,回溯到aac
(5)aac不會回文串,搜索完成

所以颅拦,本題的解法就是深度優(yōu)先搜索+回文串判斷+回溯

代碼

java 7ms 85%

class Solution {
    List<List<String>> res = new ArrayList<>();
    
    public List<List<String>> partition(String s) {
        if(s==null||s.length()==0)
            return res;
        DFS_ReCall(s,new ArrayList<String>(),0);
        return res;
    }
    /**
    * 深度優(yōu)先搜索(優(yōu)先搜索長度短的回文串)+回溯(搜索所有長度的回文串)
    */
    public void DFS_ReCall(String s,List<String> remain,int left){
        if(left==s.length()){  //判斷終止條件
            res.add(new ArrayList<String>(remain));  //添加到結果中
            return;
        }
        for(int right=left;right<s.length();right++){  //從left開始蒂誉,依次判斷l(xiāng)eft->right是不是回文串
            if(isPalindroom(s,left,right)){  //判斷是否是回文串
                remain.add(s.substring(left,right+1));   //添加到當前回文串到list中
                DFS_ReCall(s,remain,right+1);  //從right+1開始繼續(xù)遞歸,尋找回文串
                remain.remove(remain.size()-1);  //回溯距帅,從而尋找更長的回文串
            }
        }
    }
    /**
    * 判斷字符串s的子串(left->right)是否是回文串
    */
    public boolean isPalindroom(String s,int left,int right){
        while(left<right&&s.charAt(left)==s.charAt(right)){
            left++;
            right--;
        }
        return left>=right;
    }
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末右锨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子碌秸,更是在濱河造成了極大的恐慌绍移,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,686評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讥电,死亡現(xiàn)場離奇詭異蹂窖,居然都是意外死亡,警方通過查閱死者的電腦和手機恩敌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評論 3 385
  • 文/潘曉璐 我一進店門瞬测,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纠炮,你說我怎么就攤上這事月趟。” “怎么了恢口?”我有些...
    開封第一講書人閱讀 158,160評論 0 348
  • 文/不壞的土叔 我叫張陵孝宗,是天一觀的道長。 經(jīng)常有香客問我弧蝇,道長碳褒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,736評論 1 284
  • 正文 為了忘掉前任看疗,我火速辦了婚禮,結果婚禮上睦授,老公的妹妹穿的比我還像新娘两芳。我一直安慰自己,他們只是感情好去枷,可當我...
    茶點故事閱讀 65,847評論 6 386
  • 文/花漫 我一把揭開白布怖辆。 她就那樣靜靜地躺著,像睡著了一般删顶。 火紅的嫁衣襯著肌膚如雪竖螃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,043評論 1 291
  • 那天逗余,我揣著相機與錄音特咆,去河邊找鬼。 笑死录粱,一個胖子當著我的面吹牛腻格,可吹牛的內(nèi)容都是我干的画拾。 我是一名探鬼主播,決...
    沈念sama閱讀 39,129評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼菜职,長吁一口氣:“原來是場噩夢啊……” “哼青抛!你這毒婦竟也來了?” 一聲冷哼從身側響起酬核,我...
    開封第一講書人閱讀 37,872評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蜜另,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嫡意,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚕钦,經(jīng)...
    沈念sama閱讀 44,318評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,645評論 2 327
  • 正文 我和宋清朗相戀三年鹅很,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘶居。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,777評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡促煮,死狀恐怖邮屁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情菠齿,我是刑警寧澤佑吝,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站绳匀,受9級特大地震影響芋忿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疾棵,卻給世界環(huán)境...
    茶點故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一戈钢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧是尔,春花似錦殉了、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至恩溅,卻和暖如春隔箍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脚乡。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工蜒滩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,589評論 2 362
  • 正文 我出身青樓帮掉,卻偏偏與公主長得像弦悉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蟆炊,可洞房花燭夜當晚...
    茶點故事閱讀 43,687評論 2 351

推薦閱讀更多精彩內(nèi)容