Leetcode 131 分割回文串

題意理解

? ? ? ? 分割回文子串,可以看作是劃分連續的字幕組合——所以也可以用回溯的方法來解決

? ? ? ? 每個位置選與不選——該位置切割|不切割

? ? ? ? 對于每一段子串——>判斷是否是回文串:

? ? ? ? ? ? ? ? 是: 繼續切割

? ? ? ? ? ? ? ? 不是:? ? ? ? 剪枝

解題方法:

? ? ? ? 回溯,難點在于如何理解切割位置——將其抽象為樹結構

? ? ? ? 切割位置:切割位置會比數組長度+1

1.暴力回溯+剪枝優化

?準備條件:1.判斷子串是回文?

? ? ? ? ? ? ? ? ? ?2.遞歸|回溯

回溯三個關鍵步驟:

? ? ? ? 1.確定返回值和參數列表: void backtracking()

? ? ? ? 2.終止條件:

? ? ? ? ? ? ? ? ? ?是回文且切至字符串尾部——結束,收集結果

? ? ? ? 3.單層邏輯|做好回溯步驟:

????????????????子串是不回文——剪枝:提前剪枝,所以分隔到字符串尾部的一定都是合法的回文分割。

 List<List<String>> result=new ArrayList<>();LinkedList<String> path=new LinkedList<>();public List<List<String>> partition(String s) {backtracking(s,0);return result;}public void backtracking(String s,int startIndex){//終止條件if(startIndex>=s.length()){result.add(new ArrayList<>(path));return;}//單層邏輯for(int i=startIndex;i<s.length();i++){//獲取子串并判斷if(isPalindrome(s,startIndex,i)){path.add(s.substring(startIndex,i+1));backtracking(s,i+1);path.removeLast();}else{//不是回文——剪枝continue;}}}//左閉右閉判斷子串是否是回文public boolean isPalindrome(String s,int start,int end){while(start<=end){if(s.charAt(start)==s.charAt(end)){start++;end--;}else{return false;}}return true;}

2.分析

時間復雜度:O(n\times 2^{n})

空間復雜度:O(n^{2})? ????????n是元素個數

????????使用 O(n) 的棧空間以及 O(n)的用來存儲當前字符串分割方法的空間。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215735.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215735.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215735.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu Destktop 22.04 設置 ssh 超時時間

Ubuntu Destktop 22.04 使用 ssh 連接服務器時&#xff0c;發現一段時間不操作就會自動斷開連接&#xff0c;解決方法如下&#xff1a; 打開 /etc/ssh/ssh_config 文件&#xff1a; sudo vim /etc/ssh/ssh_config在文件最后添加&#xff1a; # ssh 客戶端會每隔 30 秒發送一…

在線免費制作各種證件照,有需要的收藏

現在很多場合都需要一寸證件照&#xff0c;比如辦理身份證、出國簽證等。以往&#xff0c;我們都需要到專門的照相館拍攝&#xff0c;但是現在&#xff0c;有了隨時照微信小程序&#xff08;抖音和支付搜索億鳴證件照哦&#xff09;&#xff0c;你可以足不出戶就能夠制作一寸證…

linux shell

文章目錄 預設參數腳本自動開終端if語句語法常用判斷命令文件/目錄判斷&#xff1a;字符串判斷數值判斷邏輯判斷 if高級特性&#xff1a; 預設參數 $$ Shell本身的PID&#xff08;ProcessID&#xff09;$! Shell最后運行的后臺Process的PID$? 最后運行的命令的結束代碼&#…

MySQL InnoDB Replication部署方案與實踐

1. 概述 MySQL Innodb ReplicaSet 是 MySQL 團隊在 2020 年推出的一款產品&#xff0c;用來幫助用戶快速部署和管理主從復制&#xff0c;在數據庫層仍然使用的是主從復制技術。 ReplicaSet 主要包含三個組件&#xff1a;MySQL Router、MySQL Server 以及 MySQL Shell 高級客戶…

eventBus父組件$emit一次子組件多次收到¥

eventBus父組件$emit一次子組件多次收到$on 參考&#xff08;EventBus踩坑1-CSDN博客&#xff09; 父組件emit出了事件&#xff0c;這個過程需要一定時間&#xff0c;這段時間過長&#xff0c;子組件還未接收到父組件的emit&#xff0c;父組件認為子組件沒有收到&#xff0c;…

12 位多通道國產芯片ACM32F403/F433 系列,支持 MPU 存儲保護功能,應用于工業控制,智能家居等產品中

ACM32F403/F433 芯片的內核基于 ARMv8-M 架構&#xff0c;支持 Cortex-M33 和 Cortex-M4F 指令集。芯片內核 支持一整套DSP指令用于數字信號處理&#xff0c;支持單精度FPU處理浮點數據&#xff0c;同時還支持Memory Protection Unit &#xff08;MPU&#xff09;用于提升應用的…

Java - Mybatis借助PageHelper實現分頁,集成SpringBoot

未使用SpringBoot 第?步&#xff1a;引?依賴 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.1</version> </dependency> 第?步&#xff1a;在mybatis-config.xml…

PyTorch張量:內存布局

你可能對 torch 上的某些函數感到困惑&#xff0c;它們執行相同的操作但名稱不同。 例如&#xff1a; reshape()、view()、permute()、transpose() 等。 這些函數的做法真的不同嗎&#xff1f; 不&#xff01; 但為了理解它&#xff0c;我們首先需要了解一下張量在 pytorch 中…

1 CPU實現的基本框圖

匯編語言 && 指令格式 CPU設計的框架&#xff1a;三級流水線 ROM存放指令和數據&#xff0c;大端模式&小端模式&#xff0c;地址對齊 取指 譯碼&#xff1a; 執行&#xff1a; 匯編語言 & 指令格式 流水線實現工作機制 模塊功能劃分&接口信號 參考…

Linux中用rpm管理軟件

本章主要介紹使用rpm對軟件包進行管理 使用rpm查詢軟件的信息使用rpm安裝及卸載軟件使用rpm對軟件進行更新使用rpm對軟件進行驗證 rpm 全稱是redhat package manager&#xff0c;后來改成rpm package manager&#xff0c;這是根據源 碼包編譯出來的包。先從光盤中拷貝一個包&…

strict-origin-when-cross-origin

嚴格限制同源策略 &#xff08;1&#xff09;允許服務器的同源IP地址訪問 &#xff08;2&#xff09;允許Referer --- 后端服務器要配置

linux sed命令刪除一行/多行_sed刪除第一行/linux刪除文件某一行

sed系列文章 linux常用命令(9)&#xff1a;sed命令(編輯/替換/刪除文本)linux sed命令刪除一行/多行_sed刪除第一行/linux刪除文件某一行 文章目錄 sed系列文章一、sed刪除某一行內容/刪除最后一行二、sed刪除多行三、擴展3.1、-i命令 本文主要講解如何刪除txt文件中的某一行內…

vite+ts——user.ts——ts接口定義+axios請求的寫法

import axios from axios; import qs from query-string; import {UserState} from /store/modules/user/types;export interface LoginData{username:string;password:string;grant_type?:string;scope?:string;client_id?:string;client_secret?:string;response_type?:…

企業使用APP自動化測試工具的重要因素

隨著移動應用市場的蓬勃發展&#xff0c;企業對高質量、高效率的軟件交付提出了更高的要求。在這個背景下&#xff0c;APP自動化測試工具成為了企業不可或缺的一部分。以下是企業采用APP自動化測試工具的關鍵因素&#xff1a; 1. 快速且可重復的測試執行 自動化測試工具能夠快速…

Docker入門概念

文章目錄 容器&#xff08;container&#xff1a;容器/集裝箱&#xff09;技術虛擬機解決了哪些部署問題docker解決了哪些部署問題docker是如何做到容器間運行時環境隔離的docker基本概念docker基本使用 容器&#xff08;container&#xff1a;容器/集裝箱&#xff09;技術 容…

奧威亞視頻云平臺VideoCover.aspx 接口任意文件上傳漏洞復現 [附POC]

文章目錄 奧威亞視頻云平臺VideoCover.aspx 接口任意文件上傳漏洞復現 [附POC]0x01 前言0x02 漏洞描述0x03 影響版本0x04 漏洞環境0x05 漏洞復現1.訪問漏洞環境2.構造POC3.復現0x06 修復建議奧威亞視頻云平臺VideoCover.aspx 接口任意文件上傳漏洞復現 [附POC] 0x01 前言 免責…

做數據分析為何要學統計學(5)——什么問題適合使用卡方檢驗?

卡方檢驗作為一種非常著名的非參數檢驗方法&#xff08;不受總體分布因素的限制&#xff09;&#xff0c;在工程試驗、臨床試驗、社會調查等領域被廣泛應用。但是也正是因為使用的便捷性&#xff0c;造成時常被誤用。本文參閱相關的文獻&#xff0c;對卡方檢驗的適用性進行粗淺…

原來使用代碼也可以畫時序圖,用這個Mermaid就行,真香

本文首發于我的個人掘金博客&#xff0c;看到很多人都比較喜歡這篇文章&#xff0c;分享給大家。 個人博客主頁&#xff1a;https://www.aijavapro.cn 個人掘金主頁&#xff1a;juejin.cn/user/2359988032644541/posts 個人知識星球: 覺醒的新世界程序員 一、背景 在軟件開發和…

spring數據校驗

我是南城余&#xff01;阿里云開發者平臺專家博士證書獲得者&#xff01; 歡迎關注我的博客&#xff01;一同成長&#xff01; 一名從事運維開發的worker&#xff0c;記錄分享學習。 專注于AI&#xff0c;運維開發&#xff0c;windows Linux 系統領域的分享&#xff01; 本…

數據庫(一)| 數據庫概述、基本概念、關系型數據庫特點、超鍵候選碼等

文章目錄 1 數據庫的一些基礎概念1.1 數據庫和數據庫管理系統1.2 關系模式和關系實例1.3 數據庫模式和數據庫實例 2 數據庫組織形式2.1 數據采用文件的缺點2.2 使用數據庫管理系統的 優點 3 關系型數據庫特點4 三個層次的數據抽象Data Abstraction5 超鍵、候選碼、主碼、外碼 1…