Day66 代碼隨想錄打卡|回溯算法篇---分割回文串

題目(leecode T131):

給你一個字符串?s,請你將?s?分割成一些子串,使每個子串都是?回文串。返回?s?所有可能的分割方案。

方法:本題是一個分割回文串的問題,是回溯算法的另一類問題。 針對一個字符串,我們要對其進行分割,并且確保分割后生成的子串也必須全都是回文串。分析回溯三部曲

1:傳入參數與返回值:傳入字符串s,以及切割的起始位置startIndex,不需要返回值

2:終止條件:因為切割位置startIndex控制的是切割的起始位置,當startIndex大于等于s.size時,就意味著已經切到了最后,也就該停止了。

3:單層處理邏輯:在單層中我們需要從字符串中截取子串。

for (int i = startIndex; i < s.size(); i++)循環中,我們 定義了起始位置startIndex,那么 [startIndex, i] 就是要截取的子串。

首先判斷這個子串是不是回文,如果是回文,就加入在vector<string> path中,path用來記錄切割過的回文子串。

題解:
?

class Solution {
private:vector<string> path;vector<vector<string>> result;void backtracking(const string& s,int startIndex){if(startIndex >= s.size()){             //終止條件result.push_back(path);return;}for(int i = startIndex; i < s.size(); i++){if(isPalindrome(s, startIndex, i)){string str = s.substr(startIndex, i - startIndex + 1);path.push_back(str);}else{continue;}backtracking(s, i + 1); // 尋找i+1為起始位置的子串path.pop_back(); // 回溯過程,彈出本次已經添加的子串}}bool isPalindrome(const string& s, int start, int end) {for (int i = start, j = end; i < j; i++, j--) {if (s[i] != s[j]) {return false;}}return true;}
public:vector<vector<string>> partition(string s) {result.clear();path.clear();backtracking(s, 0);return result;}
};

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

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

相關文章

前端面試題日常練-day82 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備&#xff0c;答案在文末 在Sass中&#xff0c;以下哪個功能用于創建一個混合器&#xff08;Mixin&#xff09;&#xff1f; a) include b) loop c) function d) component Sass中的嵌套規則可以幫助實現以下哪個目的&#xf…

英偉達今年在華銷售額預計將達120億美元、MiniMax創始人:三年后才會出現“殺手級”AI應用

ChatGPT狂飆160天&#xff0c;世界已經不是之前的樣子。 更多資源歡迎關注 1、英偉達今年在華銷售額預計將達120億美元 芯片咨詢公司SemiAnalysis報告預估&#xff0c;今年英偉達有望在中國銷售價值約120億美元的人工智能芯片。黃仁勛曾表示&#xff0c;希望借助新的芯片使得…

【算法】十進制轉換為二進制

目的&#xff1a;將十進制轉換為二進制 思路&#xff1a; 首先我們手算的情況是通過求余數算出進制數&#xff0c;同樣代碼也是通過做除法和求余數的方式&#xff0c;除法是得出下一次的被除數&#xff0c;而求余數是得到進制數 代碼&#xff1a; #include<stdio.h>/…

python基礎語法筆記(有C語言基礎之后)

input()用于輸入&#xff0c;其有返回值&#xff08;即用戶輸入的值&#xff09;&#xff0c;默認返回字符串。括號里可放提示語句 一行代碼若想分為多行來寫&#xff0c;需要在每一行的末尾加上“\” 單個“/”表示數學中的除法&#xff0c;不會取整。“//”才會向下取整。 …

Qt觸發paintEvent事件

常見情況下&#xff0c;paintEvent會在以下幾種情況下被觸發&#xff1a; 窗口初始化和顯示&#xff1a; 當窗口首次被創建、顯示或者窗口被覆蓋、最小化后再恢復時&#xff0c;paintEvent會被觸發以繪制窗口的內容。 部件大小或位置變化&#xff1a; 如果窗口或部件的大小或位…

【D3.js in Action 3 精譯】1.3 D3 視角下的數據可視化最佳實踐(上)

當前內容所在位置 第一部分 D3.js 基礎知識 第一章 D3.js 簡介 1.1 何為 D3.js&#xff1f;1.2 D3 生態系統——入門須知 1.2.1 HTML 與 DOM1.2.2 SVG - 可縮放矢量圖形1.2.3 Canvas 與 WebGL1.2.4 CSS1.2.5 JavaScript1.2.6 Node 與 JavaScript 框架1.2.7 Observable 記事本 1…

Redis 運維面試題

為了做好大家面試路上的助攻手&#xff0c;對于 Redis 這塊心里還沒底的同學&#xff0c;特整理 40 道Redis常見面試題&#xff0c;讓你面試不慌&#xff0c;爭取 Offer 拿到手軟&#xff01; 1、什么是 Redis&#xff1f; Redis 是完全開源免費的&#xff0c;遵守 BSD 協議&am…

C++的線程管理

C的線程管理 線程類&#xff08;Thread&#xff09;線程構造器約定構造器初始化構造器復制構造器移動構造器 多線程atomiccondition_variable應用實列 futurepromise應用實列 future應用實列 線程類&#xff08;Thread&#xff09; 執行線程是一個指令序列&#xff0c;它可以在…

Canvas:實現在線畫板操作

想象一下&#xff0c;用幾行代碼就能創造出如此逼真的圖像和動畫&#xff0c;仿佛將藝術與科技完美融合&#xff0c;前端開發的Canvas技術正是這個數字化時代中最具魔力的一環&#xff0c;它不僅僅是網頁的一部分&#xff0c;更是一個無限創意的畫布&#xff0c;一個讓你的想象…

python網絡爬蟲之Urllib

概述 urllib的request模塊提供了最基本的構造HTTP請求的方法&#xff0c;使用它可以方便地實現請求的發送并得到響應&#xff0c;同時它還帶有處理授權驗證&#xff08;authentication&#xff09;、重定向&#xff08;redirection&#xff09;、瀏覽器Cookies以及其他內容。 …

DELTA: DEGRADATION-FREE FULLY TEST-TIME ADAPTATION--論文筆記

論文筆記 資料 1.代碼地址 2.論文地址 https://arxiv.org/abs/2301.13018 3.數據集地址 https://github.com/bwbwzhao/DELTA 論文摘要的翻譯 完全測試時間自適應旨在使預訓練模型在實時推理過程中適應測試數據流&#xff0c;當測試數據分布與訓練數據分布不同時&#x…

算法中的基礎知識點,你知道多少呢!

遞歸 場景&#xff1a; ? 1&#xff09;斐波那契數列 遞推 場景&#xff1a; ? 1&#xff09;斐波那契數列 ? 2&#xff09;遞歸 回溯 棧 先進后出 場景&#xff1a; ? 1&#xff09;path.resolve /a/b/…/c/d —> /a/c/d ? 2&#xff09;JSX ? 3&#xff09;加減乘…

VBA實現Excel的數據透視表

前言 本節會介紹通過VBA的PivotCaches.Create方法實現Excel創建新的數據透視表、修改原有的數據透視表的數據源以及刷新數據透視表內容。 本節測試內容以下表信息為例 1、創建數據透視表 語法&#xff1a;PivotCaches.Create(SourceType, [SourceData], [Version]) 說明&am…

打卡第8天-----字符串

進入字符串章節了,我真的特別希望把leetcode上的題快點全部都給刷完,我是社招準備跳槽才選擇這個訓練營的,面試總是掛算法題和編程題,希望通過這個訓練營我的算法和編程的水平能有所提升,抓住機會,成功上岸。我現在的這份工作,真的是一天都不想干了,但是下家工作單位還…

Spring——配置說明

1. 別名 別名&#xff1a;如果添加了別名&#xff0c;也可以使用別名獲取這個對象 <alias name"user" alias"user2"/> 2. Bean的配置 id&#xff1a;bean 的唯一標識符&#xff0c;也就是相當于我們學的對象名class&#xff1a;bean 對象所對應的…

無法解析主機:mirrorlist.centos.org Centos 7

從 2024 年 7 月 1 日起&#xff0c;在 CentOS 7 上&#xff0c;請切換到 Vault 存檔存儲庫&#xff1a; vi /etc/yum.repos.d/CentOS-Base.repo 復制/粘貼以下內容并注意您的操作系統版本。如果需要&#xff0c;請更改。此配置中的版本為 7.9.2009&#xff1a; [base] name…

Mac虛擬機跑Windows流暢嗎 Mac虛擬機連不上網絡怎么解決 mac虛擬機網速慢怎么解決

隨著技術的發展&#xff0c;很多用戶希望能在Mac電腦上運行Windows系統&#xff0c;從而能夠使用那些僅支持Windows系統的軟件。使用虛擬機軟件可以輕松滿足這一需求。但是&#xff0c;很多人可能會有疑問&#xff1a;“Mac虛擬機跑Windows流暢嗎&#xff1f;”&#xff0c;而且…

【AI前沿】深度學習基礎:訓練神經網絡

文章目錄 &#x1f4d1;前言一、前向傳播與反向傳播1.1 前向傳播&#xff08;Forward Propagation&#xff09;1.2 反向傳播&#xff08;Backpropagation&#xff09; 二、損失函數和優化算法2.1 損失函數&#xff08;Loss Function&#xff09;2.2 優化算法&#xff08;Optimi…

極狐Gitlab使用

目錄 續接上篇&#xff1a;極狐Gitlab安裝部署-CSDN博客 1. 關閉注冊功能 2. 創建群組 3. 創建用戶 5. 邀請成員到群組 6. 設置導入導出項目源 7. 通過gitee導入庫 8. 通過倉庫URL導入 9. 自創建項目 10. 默認分支main的權限 11. 使用普通用戶進入自建庫 12. 創建用…

python的isinstance和type

class A:passclass B(A)passbB()#isinstance可以進行繼承關系的判斷 print(isinstance(b,B))#Trueprint(isinstance(b,A))#Trueprint(type(b) is B)#Trueprint(type(b) is A)#Falseprint(type(b),A,B,b)#<class __main__.B> <class __main__.A> <class __main__…