//最慢:找到每個字元為起始的所有回文串,並儲存最長的(演算法上難以實現?假設取第乙個字元,那麼必須判斷到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,然後判斷所有數字...