题目

题解

暴力法

我们根据回文字符串特点进行判断一个字符串是不是回文。

// 回文子串:首尾对称相等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. 最长回文子串相关推荐

  1. 两数相加c++_LeetCode 热题 HOT 100(01,两数相加)

    LeetCode 热题 HOT 100(01,两数相加) 不够优秀,发量尚多,千锤百炼,方可成佛. 算法的重要性不言而喻,无论你是研究者,还是最近比较火热的IT 打工人,都理应需要一定的算法能力,这也 ...

  2. C语言判断字符串是否为回文

    C语言判断字符串是否为回文 回文就是字符串中心对称,如"abcba"."abccba"是回文,"abcdba"不是回文. /*判断字符串是否 ...

  3. C语言判断字符串类型及个数并输出

    C语言判断字符串类型及个数并输出,这里判断的是: 小写字母:大写字母:空格:数字: #include <stdio.h> int main() {char a;int letter = 0 ...

  4. bigdecimal 判断是否为数字_C语言判断字符串是否为回文

    回文就是字符串中心对称,如"abcba"."abccba"是回文,"abcdba"不是回文. /*判断字符串是否为回文*/ #include ...

  5. 判断相等_C语言判断字符串是否为回文

    回文就是字符串中心对称,如"abcba"."abccba"是回文,"abcdba"不是回文. /*判断字符串是否为回文*/ #include ...

  6. char java 回文_LeetCode刷题笔记(Java)---第1-18题

    题目来自LeetCode 文章目录 全部章节 1-18题 19-40题 41-60题 61-80题 81-100题 101-120题 121-140题 1.两数之和 2.两数相加 3.无重复字符串的最 ...

  7. 【100%通过率】华为OD机试真题 Java 实现【最长回文字符串】【2023 Q1 | 100分】

            所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录 题目 如果一个字符串正读和反渎都一样(大小写敏感) ,则称 ...

  8. 【100%通过率】华为OD机试真题 C++ 实现【最长回文字符串】【2023 Q1 | 100分】

            所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录 题目 如果一个字符串正读和反渎都一样(大小写敏感) ,则称 ...

  9. 【100%通过率】华为OD机试真题 Python 实现【最长回文字符串】【2023 Q1 | 100分】

            所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录 题目 如果一个字符串正读和反渎都一样(大小写敏感) ,则称 ...

最新文章

  1. 练手扎实基本功必备:非结构文本特征提取方法
  2. NumPy 百题大冲关,冲鸭!
  3. vue 给url 中文参数 添加编码解码
  4. ThinkPHP3.1快速入门(3)查询语言
  5. linux python安装第三方库_Linux中安装python3.6和第三方库
  6. Educational Codeforces Round 112 E.Boring Segments-线段树+双指针
  7. 全国dns服务器地址
  8. php 工资 2018,2018年PHP程序员的进阶之路
  9. 计算机主机电源灯不亮,电脑电源指示灯不亮怎么回事
  10. JavaScript注释
  11. 炜煌E30 E31微型热敏打印机 STM32 串口驱动
  12. 普渡大学工程学院计算机工程,普渡大学电气工程专业申请条件.pdf
  13. python写入指定文件夹_python 获取指定文件夹下所有文件名称并写入列表的实例...
  14. opencv 裁剪 java_OpenCV3 Java图像裁剪(Trimming Rect)
  15. 手机方向传感器的缺点及解决方法探究
  16. php设计验证码图片,PHP图片验证码制作实现分享(全)
  17. Cannot commit, transaction is already closed
  18. dsf5.0获取嵌入页面的数据
  19. 信息技术发展史及其趋势
  20. 金山毒霸技术预览版1.0 beta【云沙箱 三引擎】发布(毒霸体验团队可优先测试)...

热门文章

  1. android 复制字符串,Cocos2dx 复制文本到剪切板(Android 和 ios)
  2. linux apache24 使用,科学网—linux_centos第24_2次课Apache的安装 - 郭会强的博文
  3. 用了十年的昵称badboy_怎样用5秒钟看清一对夫妻的真实感情状况?
  4. action无法传参数给html页面,HTML 解决form表单提交时,action url中参数无效问题
  5. python中如何替换某列特定数值_python 怎么根据两列值,修改对应的某列值,其中一列的为需要修改的列标题...
  6. hdfs 多个文件合并_hadoop学习笔记3 hadoop程序将本地文件夹中多个文件,合并为一个文件并上传到hdfs中--梦飞翔的地方(梦翔天空)...
  7. micropython仿真器_Micropython教程之TPYBoard DIY超声波测距仪实例演示
  8. Linux显示txt文件,如何在Linux中显示文本文件中的某些行?
  9. java 录音_用JAVA实现不限时录音功能
  10. 【转】事务和锁机制是什么关系? 开启事务就自动加锁了吗?