leetcode005(暴力解法 動態規劃法)

2021-09-26 14:17:24 字數 965 閱讀 3660

//最慢:找到每個字元為起始的所有回文串,並儲存最長的(演算法上難以實現?假設取第乙個字元,那麼必須判斷到1/2長度之後,才能確定有無回文串)

//效率太低

//能否考慮按照特定字元作為起始,來找回文串

//假設第乙個字元為a,從字串末尾找另乙個a,並判斷夾在中間的是不是回文串;

//若不是,繼續向前找下乙個a,再次判斷;

//若是,則該回文串是以a作為首位的最長串

////

//如何判斷乙個字串是不是回文串

//最慢:對撞指標逐個字元判斷

//其他方法??

//判斷是不是回文串之前,可以先算一下字串長度和當前記錄的最大長度,若是小於,則直接跳過

//時間複雜度太高,考慮剪枝方法

//優化1:擷取的字串與目前最長回文串比較,長度小於,則直接跳過

//優化2:

class solution }}

} return result;

} bool huiwen(string s)

return true;

}};

//動態規劃法,二維陣列元素dp[i][j]代表從i到j是否是回文串(true、false)

//dp[i][i]=true,因為單獨的字元一定是回文串

//dp[i][j]如何判斷,根據動態規劃的思想,需要由其子問題的解來得到

//當是雙字元的字串時,只要滿足s[i]==s[j]即可,雙字串的判斷條件是j-i=1

//當是三個或以上的字串時,只需要滿足1)s[i]==s[j] 2)dp[i+1][j-1]=true即可

//兩種情況的判斷可以用||和&&合併

class solution }}

}cout

}};

leetcode 005 最長回文子串

思路和003很相似,003是找最長的不重複序列,並返回長度 對於外迴圈的每乙個i,判斷它後面的每乙個j,是否能使得s i 到s j 構成回文序列 如果構成了回文序列,count儲存此時的回文序列長度,out儲存的是程式到現在為止 已經得到的最大長度 如果count out了,out count,並讓...

LeetCode005 最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb class solution object def longestpalindrome self,s start...

暴力求解法

1 簡單列舉 輸入正整數n,按從小到大的順序輸出所有形如abcde fghij n的表示式,其中a j恰好位數字0 9的乙個排序 可以有前導0 2 n 79.樣例輸入 樣例輸出 79546 01283 62 94736 01528 62 思路 只要列舉fghij就可以算出abcde,然後判斷所有數字...