單張圖片轉PDF(基於Go語言實現)
阿新 • • 發佈:2022-03-25
✅做題思路or感想
這題的主題有兩個:分割字串,檢查是否迴文
難點在於第一點,這裡用startIndex
作為子串開始的地方,i
作為子串結束的地方,用s.substr(startIndex, i - startIndex + 1)
來分割出子串
遞迴單層邏輯就是判斷子串是否迴文,如果迴文,則加入vector<string>
中,否則continue
class Solution { public: vector<vector<string>>result; vector<string>vec; //用雙指標法來判斷是否迴文 bool isGood(string s, int left, int right) { while (left <= right) { if (s[left] != s[right])return false; left++; right--; } return true; } void dfs (string s, int startIndex) { //當子串初始點大於主串末尾時,就結束遞迴 if (startIndex >= s.size()) { result.push_back(vec); return; } for (int i = startIndex; i < s.size(); i++) { if (isGood(s, startIndex, i)) { string str = s.substr(startIndex, i - startIndex + 1); vec.push_back(str); dfs(s, i + 1); vec.pop_back();//回溯 } else continue; } } vector<vector<string>> partition(string s) { dfs(s, 0); return result; } };