5.最长回文子串:
(1)找中心:如果中心点的左边和右边值都相等,此子串就是一个回文子串,然后往外扩大去判断
(2)动态规划,k表示 i 和 j 的间隔长度,i 表示子串的首字符,j 表示子串的尾字符,先找到子串长度为0,1,2的所有回文子串,然后其他的更大的回文子串会判断:
dp[i + 1][j - 1] && s[i] == s[j]
10.正则表达式匹配(没想好)
44.通配符
32.最长有效括号:
(1) 使用栈,遇到(就入栈,遇到)就出栈,结果数加2
(2)动态规划,dp[i]表示长度为i的子串的有效个数,首先找到“......)”这个位置,此位置dp[i]=dp[i-2]+2
然后再找"......))",如果s[i-dp[i-1]-1]是"(",则 dp[i]=dp[i-1]+dp[i-dp[i-1]-2]+2。dp[i-1]+2是前一个有效子串的有效个数
是这种情况“()(())”
53. 最大子序和:
(1)动态规划: 数组arr[-2,1,-3,4,-1,2,1,-5,4] 连续子数组 [4,-1,2,1] 的和最大,为 6。
sum存储连续和,ans是最后结果,首先sum=0,如果sum>0, sum += arr[i] 如果sum<0,sum=arr[i] ,
ans=max(sum,ans);
62. 不同路径: