问题描述 字符串str,模式串exp. 必须保证str中无'.'和'星号'字符,并且exp中'星号'不出现在首位,且无连续两个'星号'.PS星号是字符只是暂时没找到markdown的星号转义字符. '.'可以匹配任意一个字符,'星号'可以匹配0-多个星号前面的一个字符的情况. 输出可否匹配. 例: str="abc",exp="a.c" ,true str="abc",exp=".星号",true str="&quo…
问题描述 给定一个字符串,输出把它全部切成回文子串的最小分割数. 例:str="ACDCDCDAD",输出2. 解题思路 DP 存储结构 dp数组dp[len+1],dp[i]表示子串str[i:len]至少需要切割几次,才能都切割成回文串.对应的,循环从右至左进行. 注意 dp[i]的含义完全可以做对称更改,循环也变为从前向后即可. 此外,为了保证int cutTime=dp[j+1]+1;//句的顺利执行,且dp[len-1]=0,palStr=true.dp数组多开一位,并初始化…
题目 例:arr=[2,1,5,3,6,4,8,9,7] ,最长递增子序列为1,3,4,8,9 题解 step1:找最长连续子序列长度 dp[]存以arr[i]结尾的情况下,arr[0..i]中的最长递增子序列的长度. 额外加一个ends[]数组,初始化ends[0]=arr[0],其他为0.有一个有效区ends[0,r],只有有效区内的数才有意义.ends[i]=num表示遍历到目前,所有长度i+1的递增序列中,结尾最小的数时num. 遍历arr[i]时,在ends有效区找最左边>=arr[i…
原文链接 这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现.针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近200道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到万无一失.“刷”完本书后,你就是“题王”!__eol__本书采用题目+解答的方式组织内容,并把面试题类型相近或者解法相近的题目尽量放在一起,读者在学习本书时很容易看出面试题解法之间的联系,使知识的学习避免碎片化.书中将所有的面试题从难到易依次分为“将.校.尉.士”四个档次,…
  第1章栈和队列 1设计一个有getMin功能的栈(士★☆☆☆) 1由两个栈组成的队列(尉★★☆☆) 5如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆) 8猫狗队列(士★☆☆☆)10用一个栈实现另一个栈的排序(士★☆☆☆) 13用栈来求解汉诺塔问题(校★★★☆) 14生成窗口最大值数组(尉★★☆☆) 19构造数组的MaxTree(校★★★☆) 22求最大子矩阵的大小(校★★★☆) 26最大值减去最小值小于或等于num的子数组数量(校★★★☆) 31第2章链表问题34打印两个有序链表的公共部分(…
题意 给一个字符串,只由数字组成,若是'1'-'26',则认为可以转换为'a'-'z'对应的字母,问有多少种转换方法. 题解 状态转移很好想,注意dp多开一位,dp[0]为dp[2]的计算做准备.dp[i]表示到索引为i-1的字符(含)为止转换方法数. 代码 public class Main { public static void main(String args[]) { String str="01"; System.out.print(transMeans(str)); }…
题目 去掉字符串中连续出现k 个0 的子串 java代码 package com.lizhouwei.chapter5; /** * @Description: 去掉字符串中连续出现k 个0 的子串 * @Author: lizhouwei * @CreateDate: 2018/4/23 21:34 * @Modify by: * @ModifyDate: */ public class Chapter5_3 { public String removeKZero(String str, in…
问题描述 如题. 例:输入两个字符串 str1="1AB234",str2="1234EF" ,应输出最长公共子串"234". 解题思路 状态表示 dp[i][j]表示把str1[I]和str2[j]作为公共子串的最后一个字符,最长公共子串的长度. 最终,找到dp数组中的最大值及其位置,则可计算并获得最长子串. 状态转移方程 dp[i][j]=dp[i-1][j-1]+1 ,(str[i]==str[j]) dp[i][j]=0,(str[I]!…
题目 判断t1 树中是否有与t2 树拓扑结构完全相同的子树 java代码 package com.lizhouwei.chapter3; /** * @Description: 判断t1 树中是否有与t2 树拓扑结构完全相同的子树 * @Author: lizhouwei * @CreateDate: 2018/4/19 21:35 * @Modify by: * @ModifyDate: */ public class Chapter3_12 { public boolean isSubTre…
问题描述 输入 原字符串StrOrg,目标字符串StrTarget,插入.删除.替换的编辑代价ic,dc,rc.输出将原字符串编辑成目标字符串的最小代价. 解题思路 状态表示 dp[i][j]表示把strOrg[0:i]编辑成strTarget[0:j]的最小代价. 状态转移方程 从以下三种状态的取最小即可: 删除:dp[i][j]=dp[i-1][j]+dc.原串删除最后一个元素,再转移到目标串 插入:dp[i][j]=dp[i][j-1]+ic.原串变为目标元素删除最后一个元素,再插入最后一…