日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言判断字符串是不是回文_LeetCode 热题 HOT 100 5. 最长回文子串

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言判断字符串是不是回文_LeetCode 热题 HOT 100 5. 最长回文子串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

題解

暴力法

我們根據回文字符串特點進行判斷一個字符串是不是回文。

// 回文子串:首尾對稱相等const isPalindrome = s => { // abba aba for (let i = 0; i < Math.floor(s.length / 2); i++) { if (s[i] !== s[s.length - 1 - i]) { return false } } return true}/** * @param {string} s * @return {string} */var longestPalindrome = function(s) { let answer = '' if (s.length <= 1) return s[0] || '' for (let i = 0; i < s.length - 1; i++) { for (let j = i + 1; j <= s.length; j++) { curStr = s.substring(i, j) if (curStr.length > answer.length && isPalindrome(curStr)) { answer = curStr } } } return answer};

動態規劃

?一個回文字符串 abdba 去掉首尾后仍是回文 bdb?由此推導狀態轉移方程 dp?dp[i][j] 表示 s.substring(i, j+1) 這樣一個字符串是不是回文字符串?dp[i][j] = (s[i] === s[j]) && dp[i+1][j-1]?dp[i+1][j-1] 即就表示去掉首位字符后?我們還需要考慮一個特殊情況 類似 a ab aba 肯定存在回文串 即 j - i <= 2?動態規劃就是充分利用之前緩存的計算結果,快速推倒出一個字符串是不是一個回問文串?動態規劃也是典型的 空間換時間的一種思路

/** * @param {string} s * @return {string} */var longestPalindrome = function(s) { const len = s.length let answer = '' const dp = Array.from(new Array(len), () => new Array(len).fill(false)) // 此處可以省略 base state 初始化 dp[i][j] = true for (let i = len - 1; i >= 0; i--) { for (let j = i; j < len; j++) { // 狀態轉移方程 dp[i][j] = (s[i] === s[j]) && (j - i <= 2 || dp[i+1][j-1]) // 更新最長子串 if (dp[i][j]) { console.log(s.substring(i, j + 1)) } if (dp[i][j] && (j - i >= answer.length)) { answer = s.substring(i, j + 1) } } }// console.log(dp) return answer};

推薦閱讀

?告別動態規劃,連刷 40 道題,我總結了這些套路,看不懂你打我(萬字長文)[1]?如何理解動態規劃?[2]

ps: 歡迎關注我的公眾號 xyz編程日記,覺得不錯的幫忙點個?,點個在看。

References

[1]?告別動態規劃,連刷 40 道題,我總結了這些套路,看不懂你打我(萬字長文):?https://zhuanlan.zhihu.com/p/91582909[2]?如何理解動態規劃?:?https://www.zhihu.com/question/39948290

總結

以上是生活随笔為你收集整理的c语言判断字符串是不是回文_LeetCode 热题 HOT 100 5. 最长回文子串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。